I think maybe part of the problem is that that's the base url for making links in the results page, but you'd still need to set the perpage passed to $view->showpage() below that.
I don't understand the code since $perpage is never set (unless it's set in another file somewhere, but I couldn't find it).
I'd think that this section of code (lines 159 to 164):
Code:
$base = 'tags.php?' . $vbulletin->session->vars['sessionurl'] .
'tag=' . $vbulletin->GPC['tag'] . '&pp=' . $perpage;
$navbits = array('search.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['search_forums']);
$view = new vb_Search_Resultsview($results);
$view->showpage($vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], $base, $navbits);
should be something like this (green is what I added, red is a change to existing line):
Code:
$perpage = intval($vbulletin->GPC['perpage']);
if ($perpage < 1) $perpage = 5; /* or whatever you want as default value */
$base = 'tags.php?' . $vbulletin->session->vars['sessionurl'] .
'tag=' . $vbulletin->GPC['tag'] . '&pp=' . $perpage;
$navbits = array('search.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['search_forums']);
$view = new vb_Search_Resultsview($results);
$view->showpage($vbulletin->GPC['pagenumber'], $perpage, $base, $navbits);
There's also code in vb/search/resultsview.php in the showpage function that checks for the value of perpage (the second parameter), and if it's not set it uses the value of $vbulletin->options['searchperpage'] with a max of 200, so if you used the above code you'd be overriding that.
BTW, I haven't actually tried any of the above.