The Template is not the Problem, can be done with a Plugin.
Hook: forumbit_display
PHP Code:
if ($forum['link'])
{
$forum['replycount'] = '';
$forum['threadcount'] = '';
eval('$forum[\'lastpostinfo\'] = "' . fetch_template('linkhits') . '";');
}
This kicks off 1 File edit.
However, getting the count doesn't seem to be possible without the File edit.
The other Option would be to use a Query. But this would add 1 Query to Forumhome and every forumdisplay.php call where the Forum being displayed contains sub-forums that are links.
Or the Forumcache would have to be rebuild upon every Hit, which is even worse IMHO.
However, some furhter suggestions:
Your Counter-Update seems to be run every Time smth. is being done in ACP?
I'd suggest to get rid of the Settings and the admin_global Plugin.
Instead, make a new control in Forum Manager that shows the current Value so the User can just input it's own.
Hook: forumdata_start
PHP Code:
$this->validfields['linkhits'] = array(TYPE_UINT, REQ_NO);
Hook: forumadmin_edit_form
PHP Code:
if (trim($forum['link'] != ''))
{
$check = $db->query_first("SELECT linkhits FROM " . TABLE_PREFIX . "forum WHERE forumid = $forum[forumid]");
print_table_header('Forum Link Hit Counter');
print_input_row('Hit Counter Value<dfn>Here you can manually adjust the Hit-Counter for this Forum-Link</dfn>', 'forum[linkhits]', $check['linkhits']);
}
The check-query isn't ideal, but necessary as the Forum Manager
displays cached Data
Don't execute the Update in Global-Start, as this causes 1 additional Query for every Forum being displayed, no matter if it is a Link or not.
Hook: header_redirect
PHP Code:
global $foruminfo;
if (trim($foruminfo['link']) != '')
{
$vbulletin->db->query("UPDATE " . TABLE_PREFIX . "forum SET linkhits = linkhits +1 WHERE forumid=$foruminfo[forumid]");
}
You should also cache the Template on forumdisplay, as it might be shown here too.
Hook: cache_templates
PHP Code:
if (THIS_SCRIPT == 'index' OR THIS_SCRIPT == 'forumdisplay')
{
$globaltemplates = array_merge($globaltemplates, array('linkhits'));
}