The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
How to create your own vBulletin-powered page! (uses vB templates)
Want to create your very own vBulletin powered page which includes the header, footer, and the user permissions system as well? Well now you can Want to know how it will look? Take a look at the attached screenshot below! Now includes the Who's Online modification! Also, instructions included on how to create your own pages that are integrated with current vBulletin files! I'm going to give you a generic page but you can easily modify the contents of the page by changing the template So here we go Instructions: Create a new file, whatever you want to call it (let's say test.php). Open up test.php and add the following (replace TEST with whatever template you want to show): PHP Code:
Now create the template, called TEST with the following content: HTML Code:
$stylevar[htmldoctype] <html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]"> <head> <title>$vboptions[bbtitle]</title> $headinclude </head> <body> $header $navbar <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center"> <tr> <td class="tcat">Title</td> </tr> <tr> <td class="alt1">Text</td> </tr> </table> $footer </body> </html> Now check it out by going to test.php Who's Online Modification Now if you want to show who is browsing this new page of yours, just open up includes/functions_online.php and find: PHP Code:
PHP Code:
Then find: PHP Code:
PHP Code:
---------------------------------- Also if you want to create your own pages 'within' current vBulletin files, do the following: Open the file you want, and then right before the final ?> in the source code, add the following: PHP Code:
edit by Lynne: If running 3.8.4 or above, see this post to take care of the PHP 5.3.0-related problems - https://vborg.vbsupport.ru/showpost....postcount=1171 |
#1032
|
|||
|
|||
Are you too lazy to check the article section? Sorry, but the others and me are not registered here to search, copy and paste all the things your searching
If you want to modify your vB then invest some time and read the docs and article section, use the search function or invest some money and post your things here. |
#1033
|
||||
|
||||
I do not speak English
Topics can not find
Thank you anyway |
#1034
|
||||
|
||||
Ive read those links and still cant figure out how to display Todays Events and Todays birthdays...
anyone? |
#1035
|
||||
|
||||
Quote:
You'll need to find the code in the index.php page (if I recall, it's pretty well commented), including the templates, and add them to your page. |
#1036
|
||||
|
||||
Thanks Lynne!!! I'll try that out!!!
|
#1037
|
|||
|
|||
And don't fortget on the datastore
If you use the code from the indexpage you'll need the PHP Code:
|
#1038
|
||||
|
||||
damn, didnt work...
heres the php page Code:
<?php // ####################### SET PHP ENVIRONMENT ########################### error_reporting(E_ALL & ~E_NOTICE); // #################### DEFINE IMPORTANT CONSTANTS ####################### define('NO_REGISTER_GLOBALS', 1); define('THIS_SCRIPT', 'clubslist'); // change this depending on your filename // ################### PRE-CACHE TEMPLATES AND DATA ###################### // get special phrase groups $phrasegroups = array( ); // get special data templates from the datastore $specialtemplates = array( ); // pre-cache templates used by all actions $globaltemplates = array( 'navigation', ); // pre-cache templates used by specific actions $actiontemplates = array( ); $specialtemplates = array( 'birthdaycache', 'eventcache' ); // ######################### REQUIRE BACK-END ############################ require_once('./global.php'); // ####################################################################### // ######################## START MAIN SCRIPT ############################ // ####################################################################### $navbits = array(); $navbits[$parent] = 'Club Listings'; $navbits = construct_navbits($navbits); eval('$navbar = "' . fetch_template('navbar') . '";'); eval('print_output("' . fetch_template('navigation') . '");'); // ### TODAY'S BIRTHDAYS ################################################# 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); $birthdaybits = array(); foreach ($birthdaysarray AS $birthday) { eval('$birthdaybits[] = "' . fetch_template('forumhome_birthdaybit') . '";'); } $birthdays = implode(', ', $birthdaybits); if ($stylevar['dirmark']) { $birthdays = str_replace('<!--rlm-->', $stylevar['dirmark'], $birthdays); } $show['birthdays'] = iif ($birthdays, true, false); } else { $show['birthdays'] = false; } // ### 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 ($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 ($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 += 86400; } } } } } 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 (($dateline - 86400) == $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; eval('$upcomingevents .= "' . fetch_template ('forumhome_event') . '";'); } // memory saving unset($events, $eventstore); } $show['upcomingevents'] = iif ($upcomingevents, true, false); $show['todaysevents'] = iif ($vbulletin->options['showevents'] == 1, true, false); } else { $show['upcomingevents'] = false; } $show['latestalbums'] = true; ?> Be sure to change 'TEST' to the actual template name, and change 'test' to the filename. Also, change 'Test Page' to whatever you want to show in the navbar, such as 'Viewing Member Profile' (just an example heres the template page Code:
$stylevar[htmldoctype] <html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]"> <head> <title>$vboptions[bbtitle]</title> $headinclude </head> <body> $header $navbar <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center"> <tr> <td class="tcat">Title</td> </tr> </table> <if condition="$show['birthdays']"> <!-- today's birthdays --> <tbody> <tr> <td class="thead" colspan="2"> <a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('forumhome_birthdays')"><img id="collapseimg_forumhome_birthdays" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_forumhome_birthdays].gif" alt="" border="0" /></a> $vbphrase[todays_birthdays] </td> </tr> </tbody> <tbody id="collapseobj_forumhome_birthdays" style="$vbcollapse[collapseobj_forumhome_birthdays]"> <tr> <td class="alt2"><a href="calendar.php?$session[sessionurl]do=getday&day=$today&sb=1"><img src="$stylevar[imgdir_misc]/birthday.gif" alt="$vbphrase[view_birthdays]" border="0" /></a></td> <td class="alt1" width="100%"><div class="smallfont">$birthdays</div></td> </tr> </tbody> <!-- end today's birthdays --> </if> $template_hook[forumhome_wgo_pos4] <if condition="$show['upcomingevents']"> <tbody> <tr> <td class="thead" colspan="2"> <a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('forumhome_events')"><img id="collapseimg_forumhome_events" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_forumhome_events].gif" alt="" border="0" /></a> <if condition="$show['todaysevents']">$vbphrase[todays_events]<else /><phrase 1="$vboptions[showevents]">$vbphrase[upcoming_events_for_the_next_x_days]</phrase></if> </td> </tr> </tbody> <tbody id="collapseobj_forumhome_events" style="$vbcollapse[collapseobj_forumhome_events]"> <tr> <td class="alt2"><a href="calendar.php$session[sessionurl_q]"><img src="$stylevar[imgdir_misc]/calendar.gif" alt="$vbphrase[calendar]" border="0" /></a></td> <td class="alt1" width="100%"><div class="smallfont">$upcomingevents</div></td> </tr> </tbody> </if> $footer </body> </html> |
#1039
|
||||
|
||||
Take a look at your code... like this line:
$birthdaystore = build_birthdays(); Search in your files for that function. It's in functions_databuild.php and that is probably called in one of the other files 'required' at the top. Try including them (under global.php) and see if that fixes it. And what is the name of your template and where is it called in your page? It must be evaled after all the code is done. And get rid of the extra stuff at the bottom of your php page. |
#1040
|
||||
|
||||
ok, added this under global in the php file
Code:
// ###################### Start getbirthdays ####################### function build_birthdays() { global $stylevar, $vbulletin; $storebirthdays = array(); $serveroffset = date('Z', TIMENOW) / 3600; $fromdatestamp = TIMENOW + (-11 - $serveroffset) * 3600; $fromdate = getdate($fromdatestamp); $storebirthdays['day1'] = date('Y-m-d', $fromdatestamp); $todatestamp = TIMENOW + (13 - $serveroffset) * 3600; $todate = getdate($todatestamp); $storebirthdays['day2'] = date('Y-m-d', $todatestamp); $todayneggmt = date('m-d', $fromdatestamp); $todayposgmt = date('m-d', $todatestamp); // Seems quicker to grab the ids rather than doing a JOIN $usergroupids = 0; foreach($vbulletin->usergroupcache AS $usergroupid => $usergroup) { if ($usergroup['genericoptions'] & $vbulletin->bf_ugp_genericoptions['showbirthday']) { $usergroupids .= ", $usergroupid"; } } // if admin wants to only show birthdays for users who have // been active within the last $vbulletin->options[birthdaysdatecut] days... if ($vbulletin->options['activememberdays'] > 0 AND ($vbulletin->options['activememberoptions'] & 1)) { $datecut = TIMENOW - (intval($vbulletin->options['activememberdays']) * 86400); $activitycut = "AND lastactivity >= $datecut"; } else { $activitycut = ''; } $bdays = $vbulletin->db->query_read_slave(" SELECT username, userid, birthday, showbirthday FROM " . TABLE_PREFIX . "user WHERE (birthday LIKE '$todayneggmt-%' OR birthday LIKE '$todayposgmt-%') AND usergroupid IN ($usergroupids) AND showbirthday IN (2, 3) $activitycut "); $year = date('Y'); $day1 = $day2 = array(); while ($birthday = $vbulletin->db->fetch_array($bdays)) { $username = $birthday['username']; $userid = $birthday['userid']; $day = explode('-', $birthday['birthday']); if ($year > $day[2] AND $day[2] != '0000' AND $birthday['showbirthday'] == 2) { $age = $year - $day[2]; } else { unset($age); } if ($todayneggmt == $day[0] . '-' . $day[1]) { $day1[] = array( 'userid' => $userid, 'username' => $username, 'age' => $age ); } else { $day2[] = array( 'userid' => $userid, 'username' => $username, 'age' => $age ); } } $storebirthdays['users1'] = $day1; $storebirthdays['users2'] = $day2; build_datastore('birthdaycache', serialize($storebirthdays), 1); return $storebirthdays; } and still nothing shows up... doh! |
#1041
|
||||
|
||||
Nothing will show up as long as you eval your template above all the code you are doing. Also, you need to see if there are any other functions you need - I was just giving one example that I found.
|
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|