vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3 Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=187)
-   -   How to create your own vBulletin-powered page! (uses vB templates) (https://vborg.vbsupport.ru/showthread.php?t=62164)

welo 04-30-2004 05:37 AM

I've been playing with this and it's a pretty neat thing :). Cheers for putting this info together. I do a quick question I'm hoping someone can point me in the right direction on, however.

I'm working on being able to being able to display a list of agreements all from one primary page using the do= thing. So I have agreement.php setup like is described in the tutorial and instead of

Code:

eval('print_output("' . fetch_template('AGREEMENT') . '");');
...at the end of the file, I have instead added something like:

Code:

// Grab template for standard agreement
if ($_REQUEST['do'] == 'standard')
{
    eval('print_output("' . fetch_template('agree_standard') . '");');
}

// Or grab template for special agreement
elseif ($_REQUEST['do'] == 'special')
{
    eval('print_output("' . fetch_template('agree_special') . '");');
}

// Template for main agreement page if no 'do' statement
else
{
        eval('print_output("' . fetch_template('AGREEMENT') . '");');
}

This works fine except the templates for AGREEMENT, agree_standard, and agree_special all basically contain the same code except for the body of the agreement itself. Meaning, it sounds to me like each template contains a lot of redundant code, e.g.

Code:

$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
<title>$vboptions[bbtitle]</title>
$headinclude

etc.

How do I set it up so the AGREEMENT template contains this primary structure while child templates like agree_standard aren't forced to repeat it within their own structure, and just contain the HTML I need for that page's 'do' statement?

sross 04-30-2004 11:17 AM

I'm on the verge of a nervous breakdown here! lol

I have a nice page working, but I need the "what's going on?" info at the bottom. I've been trying to do this for 4 hours now. I think I've tried everything I'm capable of with no luck. I took the 'What's going on?' box and added it to the template, I then took the what's going on php info and added that to my php file for this hack. I got a few items to work but not all of them. Can someone please help me do this? Thanks

SVTBlackLight01 04-30-2004 05:30 PM

welo,

Put the HTML you need for that page's 'do' statement in avariable like this:

PHP Code:

if ($_REQUEST['do'] == 'agree_standard')
{
    eval(
'$whatever = "' fetch_template('agree_standard') . '";');
    eval(
'print_output("' fetch_template('AGREEMENT') . '");');
}
if (
$_REQUEST['do'] == 'agree_special')
{
    eval(
'$whatever = "' fetch_template('agree_special') . '";');
    eval(
'print_output("' fetch_template('AGREEMENT') . '");');
}
else
{
    eval(
'$whatever = "' fetch_template('default_do_template') . '";');
    eval(
'print_output("' fetch_template('AGREEMENT') . '");');


Then add $whatever in your AGREEMENT template where you want the 'do' stuff to appear.

welo 04-30-2004 05:51 PM

That's exactly what I was trying to do. Thanks man. I've been switching off between working on this and writing all kinds of legal crap for the actual agreements, and just couldn't see it. Sure makes sense now :). Thanks again.

sross 04-30-2004 08:27 PM

I'll donate $15 to someone's paypal account if they can help me with my issue in post #163 , I'm desperate!

welo 04-30-2004 09:16 PM

Quote:

Originally Posted by sross
I need the "what's going on?" info at the bottom.

I don't think anyone knows what you mean. I know I sure don't have a "What's going on" something-or-other anywhere on my VB.

[edit]Okay, I see what you mean. Sorry about that. I'm running into the same issue with trying to add in "Currently Active Users Viewing..."[/edit]

Mr. HillBilly 04-30-2004 09:42 PM

Here guys, try this.

Edit the lines at the top of the file so they look like this, be sure to include your own changes if you had made any.

PHP Code:

  // ################### PRE-CACHE TEMPLATES AND DATA ######################
  // get special phrase groups
  
$phrasegroups = array('holiday');
  
  
// get special data templates from the datastore
  
$specialtemplates = array(
      
'userstats',
      
'birthdaycache',
      
'maxloggedin',
      
'iconcache',
      
'eventcache',
      
'mailqueue'
  
);
  
  
// pre-cache templates used by all actions
  
$globaltemplates = array(
      
'FORUMHOME',
      
'forumhome_event',
      
'forumhome_lastpostby',
      
'forumhome_loggedinuser',
  );
  
  
// pre-cache templates used by specific actions
  
$actiontemplates = array(
  
  );
  
  
// ######################### REQUIRE BACK-END ############################
  
require_once('./global.php');
  require_once(
'./includes/functions_bigthree.php'); 

Add the lines below to your script near the bottom.

PHP Code:

  // ### TODAY'S BIRTHDAYS #################################################
  
if ($vboptions['showbirthdays'])
  {
      
$birthdaystore unserialize($datastore['birthdaycache']);
     if (!
is_array($birthdaystore) OR ($today != $birthdaystore['day1'] AND $today != $birthdaystore['day2']))
      {
          
// Need to update!
          
require_once('./includes/functions_databuild.php');
          
$birthdaystore build_birthdays();
          
DEVDEBUG('Updated Birthdays');
      }
      switch(
$today)
      {
          case 
$birthdaystore['day1']:
              
$birthdays $birthdaystore['users1'];
              break;
  
          case 
$birthdaystore['day2'];
              
$birthdays $birthdaystore['users2'];
              break;
      }
      
// memory saving
      
unset($birthdaystore);
  
      
$show['birthdays'] = iif ($birthdaystruefalse);
  }
  else
  {
      
$show['birthdays'] = false;
  }
  
  
// ### TODAY'S EVENTS #################################################
  
if ($vboptions['showevents'])
  {
      require_once(
'./includes/functions_calendar.php');
  
      
$future gmdate('n-j-Y' TIMENOW 43200 + (86400 * ($vboptions['showevents'] - 1)));
      
$eventstore unserialize($datastore['eventcache']);
  
      if (!
is_array($eventstore) OR $future != $eventstore['date'])
      {
          
// Need to update!
          
require_once('./includes/functions_databuild.php');
          
$eventstore build_events();
          
DEVDEBUG('Updated Events');
      }
  
      unset(
$eventstore['date']);
      
$events = array();
      
$eventcount 0;
      foreach (
$eventstore AS $eventid => $eventinfo)
      {
         
$offset iif (!$eventinfo['utc'], $bbuserinfo['tzoffset'], $bbuserinfo['timezoneoffset']);
         
$eventinfo['dateline_from_user'] = $eventinfo['dateline_from'] + $offset 3600;
          
$eventinfo['dateline_to_user'] = $eventinfo['dateline_to'] + $offset 3600;
          
$gettime TIMENOW $vboptions['hourdiff'];
          
$iterations 0;
  
         if (
$bbuserinfo['calendarpermissions']["$eventinfo[calendarid]"] & CANVIEWCALENDAR OR $eventinfo['holidayid'])
          {
             if (
$eventinfo['userid'] == $bbuserinfo['userid'] OR $bbuserinfo['calendarpermissions']["$eventinfo[calendarid]"] & CANVIEWOTHERSEVENT OR $eventinfo['holidayid'])
              {
                 while (
$iterations $vboptions['showevents'])
                  {
                     
$todaydate getdate($gettime);
                  if (
cache_event_info($eventinfo$todaydate['mon'], $todaydate['mday'], $todaydate['year']))
                      {
                      if (!
$vboptions['showeventtype'])
                         {
                       
$events["$eventinfo[eventid]"][] = $gettime;
                         }
                         else
                         {
                       
$events["$gettime"][] = $eventinfo['eventid'];
                         }
                         
$eventcount++;
                      }
                     
$iterations++;
                     
$gettime += 86400;
                  }
              }
          }
      }
  
      if (!empty(
$events))
      {
          
ksort($eventsSORT_NUMERIC);
          foreach(
$events AS $index => $value)
          {
              
$pastevent 0;
              
$pastcount 0;
              unset(
$eventdates$comma$daysevents);
              if (!
$vboptions['showeventtype'])
             {    
// Group by Event // $index = $eventid
                  
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'], $eventdatesvbdate($vboptions['dateformat'], $pasteventfalsetruefalse));
                         }
                      
$pastcount 0;
                      
$pastevent $dateline;
                      }
                     if (!
$day)
                      {
                      
$day vbdate('Y-n-j'$datelinefalsefalse);
                      }
                  
$eventdates .= $comma vbdate($vboptions['dateformat'], $datelinefalsetruefalse);
                     
$comma ', ';
                  
$eventinfo $eventstore["$index"];
                  }
                  if (
$pastcount)
                  {
                  
$eventdates construct_phrase($vbphrase['event_x_to_y'], $eventdatesvbdate($vboptions['dateformat'], $pasteventfalsetruefalse));
                  }
  
  
  
                  if (
$eventinfo['holidayid'])
                  {
                  
$callink "<a href=\"calendar.php?$session[sessionurl]do=getinfo&amp;day=$day\">" $vbphrase['holiday_title_' $eventinfo['varname']] . "</a>";
                  }
                  else
                  {
                  
$callink "<a href=\"calendar.php?$session[sessionurl]do=getinfo&amp;day=$day&amp;e=$eventinfo[eventid]&amp;c=$eventinfo[calendarid]\">$eventinfo[title]</a>";
                  }
              }
              else
              {    
// Group by Date
              
$eventdate vbdate($vboptions['dateformat'], $indexfalsetruefalse);
                 
$day vbdate('Y-n-j'$indexfalsefalse);
                 foreach(
$value AS $key => $eventid)
                  {
                  
$eventinfo $eventstore["$eventid"];
                     if (
$eventinfo['holidayid'])
                      {
                      
$daysevents .= $comma "<a href=\"calendar.php?$session[sessionurl]do=getinfo&amp;day=$day\">" $vbphrase['holiday_title_' $eventinfo['varname']] . "</a>";
                      }
                      else
                      {
                      
$daysevents .= $comma "<a href=\"calendar.php?$session[sessionurl]do=getinfo&amp;day=$day&amp;e=$eventinfo[eventid]&amp;c=$eventinfo[calendarid]\">$eventinfo[title]</a>";
                      }
                     
$comma ', ';
                  }
              }
              eval(
'$upcomingevents .= "' fetch_template('forumhome_event') . '";');
          }
          
// memory saving
          
unset($events$eventstore);
      }
      
$show['upcomingevents'] = iif ($upcomingeventstruefalse);
      
$show['todaysevents'] = iif ($vboptions['showevents'] == 1truefalse);
  }
  else
  {
      
$show['upcomingevents'] = false;
  }
  
  
// ### LOGGED IN USERS #################################################
  
$activeusers '';
  if (
$vboptions['displayloggedin'])
  {
      
$datecut TIMENOW $vboptions['cookietimeout'];
      
$numbervisible 0;
      
$numberregistered 0;
      
$numberguest 0;
  
      
$forumusers $DB_site->query("
          SELECT
             user.username, (user.options & 
$_USEROPTIONS[invisible]) AS invisible, user.usergroupid,
              session.userid, session.inforum, session.lastactivity,
              IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid
          FROM " 
TABLE_PREFIX "session AS session
          LEFT JOIN " 
TABLE_PREFIX "user AS user ON(user.userid = session.userid)
          WHERE session.lastactivity > 
$datecut
         ORDER BY " 
iif($permissions['genericpermissions'] & CANSEEHIDDEN'invisible ASC, ') . "username ASC, lastactivity DESC
      "
);
  
      if (
$bbuserinfo['userid'])
      {
          
// fakes the user being online for an initial page view of index.php
         
$bbuserinfo['joingroupid'] = iif($bbuserinfo['displaygroupid'], $bbuserinfo['displaygroupid'], $bbuserinfo['usergroupid']);
          
$userinfos = array
          (
              
$bbuserinfo['userid'] => array
              (
                 
'userid' => $bbuserinfo['userid'],
                 
'username' => $bbuserinfo['username'],
                 
'invisible' => $bbuserinfo['invisible'],
                  
'inforum' => 0,
                  
'lastactivity' => TIMENOW,
              
'musername' => fetch_musername($bbuserinfo'joingroupid')
              )
          );
          
$numberregistered 1;
          
$numbervisible 1;
          
fetch_online_status($userinfos["$bbuserinfo[userid]"]);
          
$loggedin $userinfos["$bbuserinfo[userid]"];
          eval(
'$activeusers = ", ' fetch_template('forumhome_loggedinuser') . '";');
      }
      else
      {
          
$userinfos = array();
      }
      
$inforum = array();
  
      while (
$loggedin $DB_site->fetch_array($forumusers))
      {
          
$userid $loggedin['userid'];
          if (!
$userid)
          {    
// Guest
              
$numberguest++;
              
$inforum["$loggedin[inforum]"]++;
          }
         else if (empty(
$userinfos["$userid"]['lastactivity']) OR ($userinfos["$userid"]['lastactivity'] < $loggedin['lastactivity']))
          {
              
$userinfos["$userid"] = $loggedin;
              
$numberregistered++;
              if (
$userid != $bbuserinfo['userid'])
              {
                 
$inforum["$loggedin[inforum]"]++;
              }
              
$loggedin['musername'] = fetch_musername($loggedin);
  
              if (
fetch_online_status($loggedin))
              {
                  
$numbervisible++;
              eval(
'$activeusers .= ", ' fetch_template('forumhome_loggedinuser') . '";');
              }
          }
      }
  
      
// memory saving
      
unset($userinfos$loggedin);
  
      
$activeusers substr($activeusers 2); // get rid of initial comma
  
      
$DB_site->free_result($loggedins);
  
      
$totalonline $numberregistered $numberguest;
      
$numberinvisible $numberregistered $numbervisible;
  
      
// ### MAX LOGGEDIN USERS ################################
      
$maxusers unserialize($datastore['maxloggedin']);
      if (
intval($maxusers['maxonline']) <= $totalonline)
      {
          
$maxusers['maxonline'] = $totalonline;
          
$maxusers['maxonlinedate'] = TIMENOW;
          
build_datastore('maxloggedin'serialize($maxusers));
      }
  
      
$recordusers $maxusers['maxonline'];
      
$recorddate vbdate($vboptions['dateformat'], $maxusers['maxonlinedate'], true);
      
$recordtime vbdate($vboptions['timeformat'], $maxusers['maxonlinedate']);
  
      
$show['loggedinusers'] = true;
  }
  else
  {
      
$show['loggedinusers'] = false;
  }

// ### BOARD STATISTICS #################################################

// get total threads & posts from the forumcache
$totalthreads 0;
$totalposts 0;
if (
is_array($forumcache))
{
    foreach (
$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
$userstats unserialize($datastore['userstats']);
$numbermembers vb_number_format($userstats['numbermembers']);
$newusername $userstats['newusername'];
$newuserid $userstats['newuserid'];

// ### ALL DONE! SPIT OUT THE HTML AND LET'S GET OUTA HERE... ### 

Save your file and upload it.

Now for the template edits,

place the following code anywhere you want the Whos online to show.

HTML Code:

  <!-- what's going on box -->
 <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
  <thead>
      <tr>
          <td class="tcat" colspan="2">$vbphrase[whats_going_on]</td>
      </tr>
  </thead>
  <if condition="$show['loggedinusers']">
  <!-- logged-in users -->
  <tbody>
      <tr>
          <td class="thead" colspan="2">
 <a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('forumhome_activeusers')"><img id="collapseimg_forumhome_activeusers" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_forumhome_activeusers].gif" alt="" border="0" /></a>
 <a href="online.php?$session[sessionurl]">$vbphrase[currently_active_users]</a>: $totalonline (<phrase 1="$numberregistered" 2="$numberguest">$vbphrase[x_members_and_y_guests]</phrase>)
          </td>
      </tr>
  </tbody>
  <tbody id="collapseobj_forumhome_activeusers" style="$vbcollapse[collapseobj_forumhome_activeusers]">
      <tr>
 <td class="alt2"><a href="online.php?$session[sessionurl]"><img src="$stylevar[imgdir_misc]/whos_online.gif" alt="$vbphrase[view_whos_online]" border="0" /></a></td>
          <td class="alt1" width="100%">
              <div class="smallfont">
 <div style="white-space: nowrap"><phrase 1="$recordusers" 2="$recorddate" 3="$recordtime">$vbphrase[most_users_ever_online_was_x_y_at_z]</phrase></div>
                  <div>$activeusers</div>
              </div>
          </td>
      </tr>
  </tbody>
  <!-- end logged-in users -->
  </if>
  <tbody>
      <tr>
          <td class="thead" colspan="2">
 <a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('forumhome_stats')"><img id="collapseimg_forumhome_stats" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_forumhome_stats].gif" alt="" border="0" /></a>
              <phrase 1="$vboptions[bbtitle]">$vbphrase[x_statistics]</phrase>
          </td>
      </tr>
  </tbody>
  <tbody id="collapseobj_forumhome_stats" style="$vbcollapse[collapseobj_forumhome_stats]">
      <tr>
 <td class="alt2"><img src="$stylevar[imgdir_misc]/stats.gif" alt="<phrase 1="$vboptions[bbtitle]">$vbphrase[x_statistics]</phrase>" border="0" /></td>
          <td class="alt1" width="100%">
          <div class="smallfont">
 <div>$vbphrase[threads]: $totalthreads, $vbphrase[posts]: $totalposts, $vbphrase[members]: $numbermembers</div>
 <div><phrase 1="member.php?$session[sessionurl]u=$newuserid" 2="$newusername">$vbphrase[welcome_to_our_newest_member_x]</phrase></div>
          </div>
          </td>
      </tr>
  </tbody>
  <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&amp;day=$today&amp;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>
  <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]"><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>
  </table>
  <br />
  <!-- end what's going on box -->


sross 05-01-2004 12:28 AM

1 Attachment(s)
Mr. Hillbilly, thanks for the help so far! Still not working though. I'm not sure what I'm doing wrong. I have attachment my php code and template code. The following code shows the what's going on box as:

APUG Forums Statistics
Threads: , Posts: , Members:
Welcome to our newest member,

It only shows a few stats and they are blank. Hope you can help, thanks again!

Mr. HillBilly 05-01-2004 03:48 AM

1 Attachment(s)
Forgot to add a couple of lines, this one should work.

sross 05-01-2004 04:13 AM

Quote:

Originally Posted by Mr. HillBilly
Forgot to add a couple of lines, this one should work.

updated the new php file, cleared cache, went back to the page and still no change, looks the same :( seems like it should work, weird


All times are GMT. The time now is 02:07 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02595 seconds
  • Memory Usage 1,977KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (3)bbcode_code_printable
  • (1)bbcode_html_printable
  • (3)bbcode_php_printable
  • (2)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (4)pagenav_pagelinkrel
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete