The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
|||
|
|||
vB4: Board Statistics On All Pages
Hi everyone!
I want to display the board stats on all pages (in footer). I have copied the codes from the forum.php and created a new template and all is well. The only thing does not show is the Threads and Posts count, they all show "0". This is not the issue. I can have the board stats on all pages but that means I would have to edit all the templates and the relevant php files. This would not make any sense. If I need to change a word then I would have to edit all templates again lol. My thing is, how can I get the board stats to work in the footer template? It may not be possible because I do not see any footer.php file. Is there a work around? OR, how to get this to work in the footer template: {vb:raw numbermembers} Regards |
#2
|
|||
|
|||
To get the stats to work in the footer template you could create a plugin using hook parse_templates and your code in there. You can then use vB_Template:reRegister() to register a variable to the footer template.
|
#3
|
|||
|
|||
Thanks Kev!
Im a noob really, can you show me a link to read "how to"? I sure want to learn. Thanks |
#4
|
|||
|
|||
Well, you said you managed to find the code for the stats and use it in a new template, so it sounds like you've figured out some of it. Creating a plugin isn't hard, the instructions are in the manual (which is under "Support" on vbulletin.com). It's really just a matter of going to Plugins & Products in the admincp and clicking on "Add new Plugin" and filling in the fields.
There's an article here about templates: https://vborg.vbsupport.ru/showthread.php?t=228078. You can check for other articles in the article forum but I don't know if there's any comprehensive "here's how to write plugins for vbulletin" article. Plugins are really just pieces of code that get executed at certain points in the vbulletin scripts, so I think it's really difficult to write one without reading the vbulletin php files and seeing what's going on, and which hook locations are useful. I have the vbulletin code on my local computer and I use an application to search across all files, so I usually recommend that (although I know it's probably not practical to non programmers or casual programmers). As for what you're trying to do, I suggested the hook location parse_templates because I know it will be called once before the header and footer templates are rendered, so if you want to add something to either of those it's a good choice. It's in includes/class_bootstrap.php around line 430, if you want to see what's going on there. The line that calls the plugin code looks like this: Code:
($hook = vBulletinHook::fetch_hook('parse_templates')) ? eval($hook) : false; |
#5
|
|||
|
|||
Hi Kev
Ok Ive done that but when I go to my forum, I see the footer with the stats great that the stats shows in the footer but why the footer shows as the forum itself? Meaning when I go to example.com/forum, I just see the footer. |
#6
|
|||
|
|||
I'm not sure why that is, I'd have to know more about what you did. Are you saying you made a plugin and it caused the rest of the forum to disappear?
|
#7
|
|||
|
|||
Quote:
Below shows if I want the stats to show in a custom template, example if I go to forum/footer.php. If I add {vb:raw numbermembers} into the footer template and then navigate to forum/footer.php, the stat shows. Code:
<?php error_reporting(E_ALL & ~E_NOTICE); define('THIS_SCRIPT', 'index'); define('CSRF_PROTECTION', true); define('CSRF_SKIP_LIST', ''); define('VB_ENTRY', 'footer.php'); // get special phrase groups $phrasegroups = array('holiday'); // get special data templates from the datastore $specialtemplates = array( 'userstats', 'birthdaycache', 'maxloggedin', 'iconcache', 'eventcache', 'mailqueue', 'activeblocks', ); // pre-cache templates used by all actions $globaltemplates = array( 'ad_board_after_forums', 'ad_board_below_whats_going_on', 'block_blogentries', 'block_cmsarticles', 'block_newposts', 'block_sgdiscussions', 'block_tagcloud', 'block_threads', 'block_html', 'FORUMHOME', 'forumhome_event', 'forumhome_subforums', 'forumhome_forumbit_level1_nopost', 'forumhome_forumbit_level1_post', 'forumhome_forumbit_level2_nopost', 'forumhome_forumbit_level2_post', 'forumhome_lastpostby', 'tag_cloud_link', 'footer', ); // pre-cache templates used by specific actions $actiontemplates = array(); require_once('./global.php'); require_once(DIR . '/includes/functions_bigthree.php'); require_once(DIR . '/includes/functions_forumlist.php'); verify_forum_url($vbulletin->options['forumhome']); ($hook = vBulletinHook::fetch_hook('forumhome_start')) ? eval($hook) : false; // get permissions to view forumhome if (!($permissions['forumpermissions'] & $vbulletin->bf_ugp_forumpermissions['canview'])) { print_no_permission(); } $navbits = array(); if (empty($foruminfo['forumid'])) { // show all forums $forumid = -1; $navbits[''] = $vbphrase['forum']; } else { // check forum permissions $_permsgetter_ = 'index'; $forumperms = fetch_permissions($foruminfo['forumid']); if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview'])) { print_no_permission(); } // check if there is a forum password and if so, ensure the user has it set verify_forum_password($foruminfo['forumid'], $foruminfo['password']); // draw nav bar $navbits[fetch_seo_url('forumhome', array())] = $vbphrase['forum']; $parentlist = array_reverse(explode(',', substr($foruminfo['parentlist'], 0, -3))); foreach ($parentlist AS $forumID) { $forumTitle =& $vbulletin->forumcache["$forumID"]['title']; $navbits[fetch_seo_url('forum', array('forumid' => $forumID, 'title' => $forumTitle))] = $forumTitle; } // pop the last element off the end of the $nav array so that we can show it without a link array_pop($navbits); $navbits[''] = $foruminfo['title']; } $today = vbdate('Y-m-d', TIMENOW, false, false); $navbits = construct_navbits(array('' => 'footer')); $navbar = render_navbar_template($navbits); // ###### YOUR CUSTOM CODE GOES HERE ##### $pagetitle = 'test page'; $birthdays = array(); $show['birthdays'] = false; if ($vbulletin->options['showbirthdays']) { if (!is_array($vbulletin->birthdaycache) OR ($today != $vbulletin->birthdaycache['day1'] AND $today != $vbulletin->birthdaycache['day2']) OR !is_array($vbulletin->birthdaycache['users1']) ) { // Need to update! require_once(DIR . '/includes/functions_databuild.php'); $birthdaystore = build_birthdays(); DEVDEBUG('Updated Birthdays'); } else { $birthdaystore = $vbulletin->birthdaycache; } switch ($today) { case $birthdaystore['day1']: $birthdaysarray = $birthdaystore['users1']; break; case $birthdaystore['day2']: $birthdaysarray = $birthdaystore['users2']; break; default: $birthdaysarray = array(); } // memory saving unset($birthdaystore); $clc = 0; foreach ($birthdaysarray AS $birthday) { $clc++; $show['birthdays'] = true; $birthday['comma'] = $vbphrase['comma_space']; $birthdays[$clc] = $birthday; } // Last element if ($clc) { $birthdays[$clc]['comma'] = ''; } } // ### TODAY'S EVENTS if ($vbulletin->options['showevents']) { require_once(DIR . '/includes/functions_calendar.php'); $future = gmdate('n-j-Y' , TIMENOW + 86400 + 86400 * $vbulletin->options['showevents']); if (!is_array($vbulletin->eventcache) OR $future != $vbulletin->eventcache['date']) { // Need to update! $eventstore = build_events(); DEVDEBUG('Updated Events'); } else { $eventstore = $vbulletin->eventcache; } unset($eventstore['date']); $events = array(); $eventcount = 0; $holiday_calendarid = 0; foreach ($eventstore AS $eventid => $eventinfo) { $offset = $eventinfo['dst'] ? $vbulletin->userinfo['timezoneoffset'] : $vbulletin->userinfo['tzoffset']; $eventstore["$eventid"]['dateline_from_user'] = $eventinfo['dateline_from_user'] = $eventinfo['dateline_from'] + $offset * 3600; $eventstore["$eventid"]['dateline_to_user'] = $eventinfo['dateline_to_user'] = $eventinfo['dateline_to'] + $offset * 3600; $gettime = TIMENOW - $vbulletin->options['hourdiff']; $iterations = 0; $todaydate = getdate($gettime); if (!$eventinfo['singleday'] AND !$eventinfo['recurring'] AND $eventinfo['dateline_from_user'] < gmmktime(0, 0, 0, $todaydate['mon'], $todaydate['mday'], $todaydate['year'])) { $sub = -3; } else if (!empty($eventinfo['holidayid'])) { $sub = -2; } else if ($eventinfo['singleday']) { $sub = -1; } else { $sub = $eventinfo['dateline_from_user'] - (86400 * (intval($eventinfo['dateline_from_user'] / 86400))); } if ($vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar'] OR ($eventinfo['holidayid'] AND $vbulletin->options['showholidays'])) { if ($eventinfo['holidayid'] AND $vbulletin->options['showholidays']) { if (!$holiday_calendarid) { $holiday_calendarid = -1; // stop this loop from running again in the future if (is_array($eventinfo['holiday_calendarids'])) { foreach ($eventinfo['holiday_calendarids'] AS $potential_holiday_calendarid) { if ($vbulletin->userinfo['calendarpermissions']["$potential_holiday_calendarid"] & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar']) { $holiday_calendarid = $potential_holiday_calendarid; break; } } } } if ($holiday_calendarid < 0) { continue; } $eventstore["$eventid"]['calendarid'] = $holiday_calendarid; $eventinfo['calendarid'] = $holiday_calendarid; } if ($eventinfo['userid'] == $vbulletin->userinfo['userid'] OR $vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewothersevent'] OR ($eventinfo['holidayid'] AND $vbulletin->options['showholidays'])) { if (!$eventinfo['recurring'] AND !$vbulletin->options['showeventtype'] AND !$eventinfo['singleday'] AND cache_event_info($eventinfo, $todaydate['mon'], $todaydate['mday'], $todaydate['year'])) { $events["$eventid"][] = $gettime . "_$sub"; } else { while ($iterations < $vbulletin->options['showevents']) { $addcache = false; $todaydate = getdate($gettime); if (isset($eventinfo['holidayid']) AND $eventinfo['holidayid'] AND $eventinfo['recurring'] == 6) { if ($eventinfo['recuroption'] == "$todaydate[mon]|$todaydate[mday]") { $addcache = true; } } else if (cache_event_info($eventinfo, $todaydate['mon'], $todaydate['mday'], $todaydate['year'])) { $addcache = true; } if ($addcache) { if (!$vbulletin->options['showeventtype']) { $events["$eventid"][] = $gettime . "_$sub"; } else { $events["$gettime"][] = $eventid; } $eventcount++; } $iterations++; $gettime = strtotime('+1 day', $gettime); } } } } } if (!empty($events)) { if ($vbulletin->options['showeventtype']) { ksort($events, SORT_NUMERIC); } else { function groupbyevent($a, $b) { if ($a[0] == $b[0]) { return 0; } else { $values1 = explode('_', $a[0]); $values2 = explode('_', $b[0]); if ($values1[0] != $values2[0]) { return ($values1[0] < $values2[0]) ? -1 : 1; } else { // Same day events. Check the event start time to order them properly (compare number of seconds from 00:00) return ($values1[1] < $values2[1]) ? -1 : 1; } } } uasort($events, 'groupbyevent'); // this crazy code is to remove $sub added above that ensures a event maintains its position after the sort // if associative values are the same foreach($events AS $eventid => $times) { foreach ($times AS $key => $time) { $events["$eventid"]["$key"] = intval($time); } } } $upcomingevents = ''; foreach($events AS $index => $value) { $pastevent = 0; $pastcount = 0; $comma = $eventdates = $daysevents = ''; if (!$vbulletin->options['showeventtype']) { // Group by Event // $index = $eventid $eventinfo = $eventstore["$index"]; if (empty($eventinfo['recurring']) AND empty($eventinfo['singleday'])) { // ranged event -- show it from its real start and real end date (vbgmdate) $fromdate = vbdate($vbulletin->options['dateformat'], $eventinfo['dateline_from_user'], false, true, false, true); $todate = vbdate($vbulletin->options['dateformat'], $eventinfo['dateline_to_user'], false, true, false, true); if ($fromdate != $todate) { $eventdates = construct_phrase($vbphrase['event_x_to_y'], $fromdate, $todate); } else { $eventdates = vbdate($vbulletin->options['dateformat'], $eventinfo['dateline_from_user'], false, true, false, true); } $day = vbdate('Y-n-j', $eventinfo['dateline_from_user'], false, false); } else { unset($day); foreach($value AS $key => $dateline) { if ((strtotime('-1 day', $dateline)) == $pastevent AND !$eventinfo['holidayid']) { $pastevent = $dateline; $pastcount++; continue; } else { if ($pastcount) { $eventdates = construct_phrase($vbphrase['event_x_to_y'], $eventdates, vbdate($vbulletin->options['dateformat'], $pastevent, false, true, false)); } $pastcount = 0; $pastevent = $dateline; } if (!$day) { $day = vbdate('Y-n-j', $dateline, false, false, false); } $eventdates .= $comma . vbdate($vbulletin->options['dateformat'], $dateline, false, true, false); $comma = ', '; } if ($pastcount) { $eventdates = construct_phrase($vbphrase['event_x_to_y'], $eventdates, vbdate($vbulletin->options['dateformat'], $pastevent, false, true, false)); } } if ($eventinfo['holidayid']) { $callink = '<a href="calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=getinfo&day=$day&c=$eventinfo[calendarid]\">" . $vbphrase['holiday' . $eventinfo['holidayid'] . '_title'] . "</a>"; } else { $callink = '<a href="calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=getinfo&day=$day&e=$eventinfo[eventid]&c=$eventinfo[calendarid]\">$eventinfo[title]</a>"; } } else { // Group by Date $eventdate = vbdate($vbulletin->options['dateformat'], $index, false, true, false); $day = vbdate('Y-n-j', $index, false, false, false); foreach($value AS $key => $eventid) { $eventinfo = $eventstore["$eventid"]; if ($eventinfo['holidayid']) { $daysevents .= $comma . '<a href="calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=getinfo&day=$day&c=$eventinfo[calendarid]\">" . $vbphrase['holiday' . $eventinfo['holidayid'] . '_title'] . "</a>"; } else { $daysevents .= $comma . '<a href="calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=getinfo&day=$day&e=$eventinfo[eventid]&c=$eventinfo[calendarid]\">$eventinfo[title]</a>"; } $comma = ', '; } } ($hook = vBulletinHook::fetch_hook('forumhome_event')) ? eval($hook) : false; $templater = vB_Template::create('forumhome_event'); $templater->register('callink', $callink); $templater->register('daysevents', $daysevents); $templater->register('eventdate', $eventdate); $templater->register('eventdates', $eventdates); $upcomingevents .= $templater->render(); } // memory saving unset($events, $eventstore); $show['upcomingevents'] = iif ($upcomingevents, true, false); } $show['todaysevents'] = iif ($vbulletin->options['showevents'] == 1, true, false); } else { $show['upcomingevents'] = false; } // ### LOGGED IN USERS ################################################# if (($vbulletin->options['displayloggedin'] == 1 OR $vbulletin->options['displayloggedin'] == 2 OR ($vbulletin->options['displayloggedin'] > 2 AND $vbulletin->userinfo['userid'])) AND !$show['search_engine']) { $datecut = TIMENOW - $vbulletin->options['cookietimeout']; $numbervisible = 0; $numberregistered = 0; $numberguest = 0; $hook_query_fields = $hook_query_joins = $hook_query_where = ''; ($hook = vBulletinHook::fetch_hook('forumhome_loggedinuser_query')) ? eval($hook) : false; $forumusers = $db->query_read_slave(" SELECT user.username, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible, user.usergroupid, user.lastvisit, session.userid, session.inforum, session.lastactivity, session.badlocation, IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid $hook_query_fields FROM " . TABLE_PREFIX . "session AS session LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = session.userid) $hook_query_joins WHERE session.lastactivity > $datecut $hook_query_where " . iif($vbulletin->options['displayloggedin'] == 1 OR $vbulletin->options['displayloggedin'] == 3, "ORDER BY username ASC") . " "); if ($vbulletin->userinfo['userid']) { // fakes the user being online $vbulletin->userinfo['joingroupid'] = iif($vbulletin->userinfo['displaygroupid'], $vbulletin->userinfo['displaygroupid'], $vbulletin->userinfo['usergroupid']); $userinfos = array ( $vbulletin->userinfo['userid'] => array ( 'userid' =>& $vbulletin->userinfo['userid'], 'username' =>& $vbulletin->userinfo['username'], 'invisible' =>& $vbulletin->userinfo['invisible'], 'inforum' => 0, 'lastactivity' => TIMENOW, 'lastvisit' =>& $vbulletin->userinfo['lastvisit'], 'usergroupid' =>& $vbulletin->userinfo['usergroupid'], 'displaygroupid' =>& $vbulletin->userinfo['displaygroupid'], 'infractiongroupid' =>& $vbulletin->userinfo['infractiongroupid'], ) ); } else { $userinfos = array(); } $inforum = array(); while ($loggedin = $db->fetch_array($forumusers)) { $userid = $loggedin['userid']; if (!$userid) { // Guest $numberguest++; if (!isset($inforum["$loggedin[inforum]"])) { $inforum["$loggedin[inforum]"] = 0; } if (!$loggedin['badlocation']) { $inforum["$loggedin[inforum]"]++; } } else if (empty($userinfos["$userid"]) OR ($userinfos["$userid"]['lastactivity'] < $loggedin['lastactivity'])) { $userinfos["$userid"] = $loggedin; } } // We are a guest and somehow got missed by the query. if (!$vbulletin->userinfo['userid'] AND !$numberguest) { $numberguest++; } $activeusers = array(); /* VBIV-12365 Users who are moderated or awaiting e-mail confirmation were being counted as guests. This was causing online count discrepancies between this and online.php, removed code */ foreach ($userinfos AS $userid => $loggedin) { $numberregistered++; if ($userid != $vbulletin->userinfo['userid'] AND !$loggedin['badlocation']) { if (!isset($inforum["$loggedin[inforum]"])) { $inforum["$loggedin[inforum]"] = 0; } $inforum["$loggedin[inforum]"]++; } fetch_musername($loggedin); $loggedin['comma'] = $vbphrase['comma_space']; ($hook = vBulletinHook::fetch_hook('forumhome_loggedinuser')) ? eval($hook) : false; if (fetch_online_status($loggedin)) { $numbervisible++; $activeusers[$numbervisible] = $loggedin; } } // Last element if ($numbervisible) { $activeusers[$numbervisible]['comma'] = ''; } // memory saving unset($userinfos, $loggedin); $db->free_result($forumusers); $totalonline = $numberregistered + $numberguest; $numberinvisible = $numberregistered - $numbervisible; // ### MAX LOGGEDIN USERS ################################ if (intval($vbulletin->maxloggedin['maxonline']) <= $totalonline) { $vbulletin->maxloggedin['maxonline'] = $totalonline; $vbulletin->maxloggedin['maxonlinedate'] = TIMENOW; build_datastore('maxloggedin', serialize($vbulletin->maxloggedin), 1); } $recordusers = vb_number_format($vbulletin->maxloggedin['maxonline']); $recorddate = vbdate($vbulletin->options['dateformat'], $vbulletin->maxloggedin['maxonlinedate'], true); $recordtime = vbdate($vbulletin->options['timeformat'], $vbulletin->maxloggedin['maxonlinedate']); $show['loggedinusers'] = true; } else { $show['loggedinusers'] = false; } // ### BOARD STATISTICS ################################################# // get total threads & posts from the forumcache $totalthreads = 0; $totalposts = 0; if (is_array($vbulletin->forumcache)) { foreach ($vbulletin->forumcache AS $forum) { $totalthreads += $forum['threadcount']; $totalposts += $forum['replycount']; } } $totalthreads = vb_number_format($totalthreads); $totalposts = vb_number_format($totalposts); // get total members and newest member from template $numbermembers = vb_number_format($vbulletin->userstats['numbermembers']); $newuserinfo = array( 'userid' => $vbulletin->userstats['newuserid'], 'username' => $vbulletin->userstats['newusername'] ); $activemembers = vb_number_format($vbulletin->userstats['activemembers']); $show['activemembers'] = ($vbulletin->options['activememberdays'] > 0 AND ($vbulletin->options['activememberoptions'] & 2)) ? true : false; $ad_location['board_after_forums'] = vB_Template::create('ad_board_after_forums')->render(); $ad_location['board_below_whats_going_on'] = vB_Template::create('ad_board_below_whats_going_on')->render(); // ###### NOW YOUR TEMPLATE IS BEING RENDERED ###### $templater = vB_Template::create('footer'); $templater->register_page_templates(); $templater->register('activemembers', $activemembers); $templater->register('activeusers', $activeusers); $templater->register('forumbits', $forumbits); $templater->register('newuserinfo', $newuserinfo); $templater->register('numberguest', $numberguest); $templater->register('numbermembers', $numbermembers); $templater->register('numberregistered', $numberregistered); $templater->register('totalonline', $totalonline); $templater->register('totalposts', $totalposts); $templater->register('totalthreads', $totalthreads); $templater->register('wgo_members',$wgo_members); $templater->register('wgo_members_list',$wgo_members_list); print_output($templater->render()); ?> |
#8
|
|||
|
|||
Now if I want the stats to show in a template, without creating a php file, I create a new plugin and add this:
Code:
// ### BOARD STATISTICS ################################################# // get total threads & posts from the forumcache $totalthreads = 0; $totalposts = 0; if (is_array($vbulletin->forumcache)) { foreach ($vbulletin->forumcache AS $forum) { $totalthreads += $forum['threadcount']; $totalposts += $forum['replycount']; } } $totalthreads = vb_number_format($totalthreads); $totalposts = vb_number_format($totalposts); // get total members and newest member from template $numbermembers = vb_number_format($vbulletin->userstats['numbermembers']); $newuserinfo = array( 'userid' => $vbulletin->userstats['newuserid'], 'username' => $vbulletin->userstats['newusername'] ); $activemembers = vb_number_format($vbulletin->userstats['activemembers']); $show['activemembers'] = ($vbulletin->options['activememberdays'] > 0 AND ($vbulletin->options['activememberoptions'] & 2)) ? true : false; $ad_location['board_after_forums'] = vB_Template::create('ad_board_after_forums')->render(); $ad_location['board_below_whats_going_on'] = vB_Template::create('ad_board_below_whats_going_on')->render(); // ###### NOW YOUR TEMPLATE IS BEING RENDERED ###### $templater = vB_Template::create('footer'); $templater->register_page_templates(); $templater->register('activemembers', $activemembers); $templater->register('activeusers', $activeusers); $templater->register('forumbits', $forumbits); $templater->register('newuserinfo', $newuserinfo); $templater->register('numberguest', $numberguest); $templater->register('numbermembers', $numbermembers); $templater->register('numberregistered', $numberregistered); $templater->register('totalonline', $totalonline); $templater->register('totalposts', $totalposts); $templater->register('totalthreads', $totalthreads); $templater->register('wgo_members',$wgo_members); $templater->register('wgo_members_list',$wgo_members_list); print_output($templater->render()); I followed your step to create a custom vb:raw xxx but that only display just text. I need it to execute php scripts: https://vborg.vbsupport.ru/showthread.php?t=282796 |
#9
|
|||
|
|||
Oh, OK, if you're using a plugin on hook location parse_templates like we were talking about, then you don't need to render the footer template because that will be done by the vbulletin code. All you need to do is call vB_Template:reRegister() for any new variables you want to use in the footer template, like:
Code:
// put code here to calculate new variables, then... $templatevalues = array('activemembers' => $activemembers, 'activeusers' => $activeusers, 'newuserinfo' => $newuserinfo, 'numberguest' => $numberguest, 'numbermembers' => $numbermembers, 'numberregistered' => $numberregistered, 'totalonline' => $totalonline, 'totalposts' => $totalposts, 'totalthreads' => $totalthreads); vB_Tempate::preRegister('footer', $templatevalues); Then you can use those variables in the footer template. Your plugin only needs to include the code for variables you want to add, so you don't need ot worry about all the other things in the footer template. Another way to do it might be to create a small template for the stats you want to add to the footer, render it like you've done above except instead of calling print_output, save it to a string variable. Then preRegister that variable to the footer template, and you only have to insert one variable in the footer template. BTW, the reason you are getting only the footer showing is that print_output exits the script when it's done, so it can really only be called as the last thing on a page. |
#10
|
|||
|
|||
Ok. Should I copy the code above and paste it inside of the plugin php code box?
|
Thread Tools | |
Display Modes | |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|