Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 4 Articles

Reply
 
Thread Tools
[HOW TO - vB4] Create your own vBulletin page
Lynne's Avatar
Lynne
Join Date: Sep 2004
Posts: 41,180

 

California/Idaho
Show Printable Version Email this Page Subscription
Lynne Lynne is offline 11-15-2009, 10:00 PM

This is an updated article on how to create your own vbulletin powered page. It's only for use with vB4.

This is NOT my work. I'm posting this from another thread where vB Style took the time to write this out. And his work is based on the article by Gary King here - How to create your own vBulletin-powered page! (uses vB templates)

Instructions to Create your Own Page:


1. Create the php page:
- 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 - WARNING: the template name is CASE SENSITIVE!!!):
Code:
<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################

define('THIS_SCRIPT', 'test');
define('CSRF_PROTECTION', true);  
// 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('TEST',
);

// pre-cache templates used by specific actions
$actiontemplates = array();

// ######################### REQUIRE BACK-END ############################
// if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line
// chdir ('/path/to/your/forums');
require_once('./global.php');

// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################

$navbits = construct_navbits(array('' => 'Test Page'));
$navbar = render_navbar_template($navbits);

// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle = 'My Page Title';

// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######

$templater = vB_Template::create('TEST');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());

?>
- Be sure to change 'TEST' to the actual template name (WARNING: the template name is CASE SENSITIVE!!!), and change 'test' to the filename or a unique name for the page. Also, change 'Test Page' and 'My Page Title' to whatever you want to show in the navbits, such as 'Viewing Member Profile' (just an example).

2. Create the Template:
- If you are in debug mode, create the template in your MASTER STYLE so it shows up in all your styles, otherwise make sure you create the template in the style you are using. If following the page above, call the template TEST (WARNING: the template name is CASE SENSITIVE!!!) with the following content:
HTML Code:
{vb:stylevar htmldoctype}
<html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}" id="vbulletin_html">
  <head>
    <title>{vb:raw vboptions.bbtitle} - {vb:raw pagetitle}</title>
    {vb:raw headinclude}
    {vb:raw headinclude_bottom}
  </head>
  <body>
    
    {vb:raw header}
    
    {vb:raw navbar}
    
    <div id="pagetitle">
      <h1>{vb:raw pagetitle}</h1>
    </div>
    
    <h2 class="blockhead">Title</h2>
    <div class="blockbody">
      <div class="blockrow">
        Text
      </div>
    </div>
    
    {vb:raw footer}
  </body>
</html>
.
Instructions to Add your Page to the Who's Online List (WOL):
Create two plugins using the following hooks. Replace mypage and similar with your information.

1. hook location - online_location_process:
Code:
switch ($filename)
{
    case 'test.php':
        $userinfo['activity'] = 'mypage';
        break;
// add more cases here if you have more than one custom page. no need for multiple plugins. one plugin can handle all.
}
.
2. hook location online_location_unknown:
Code:
switch ($userinfo['activity'])
{
    case 'mypage':
        $userinfo['where'] = '<a href="test.php?'.$vbulletin->session->vars[sessionurl].'">My Page</a>';
        $userinfo['action'] = "Viewing My Page";
        $handled = true;
        break;
// add more cases here if you have more than one custom page. no need for multiple plugins. one plugin can handle all.
}
.
The colored part in the code above shows what you need to change in the plugins (both reds should be the same and both blues should be the same, whereas green can be whatever you want).


Please see this article for help with rendering templates - [vB4] Rendering templates and registering variables - a short guide
Reply With Quote
  #102  
Old 12-30-2009, 03:45 AM
4ums 4ums is offline
 
Join Date: Oct 2009
Posts: 33
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
If you need help with the modification, you need to ask in the modification thread. I have no idea what is needed for that modification to work.
Thanks lynne but even if we forget my games mod i was asking do i need your mod here to create a page to work for the new tab i have created with ragteks mod thanks.
Reply With Quote
  #103  
Old 12-30-2009, 06:37 AM
stejoh stejoh is offline
 
Join Date: Jan 2007
Posts: 14
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
If we had a link to the page, it would be much easier to see what is going on.
Here's the page with the padding problem, i.e. which stylevar to change to add more padding around cells (since cellpadding="number" does not work.

http://99nicu.org/testforum/test.php
Reply With Quote
  #104  
Old 12-30-2009, 02:04 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by 4ums View Post
Thanks lynne but even if we forget my games mod i was asking do i need your mod here to create a page to work for the new tab i have created with ragteks mod thanks.
No, you may create a tab for an existing page or any condition your want (I have mine highlighting on my test site for a couple of the forums).

Quote:
Originally Posted by stejoh View Post
Here's the page with the padding problem, i.e. which stylevar to change to add more padding around cells (since cellpadding="number" does not work.

http://99nicu.org/testforum/test.php
Try adding your padding inline:
HTML Code:
<td width="33%" valign="top" style="padding: 25px;">
Reply With Quote
  #105  
Old 12-30-2009, 02:11 PM
stejoh stejoh is offline
 
Join Date: Jan 2007
Posts: 14
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
Try adding your padding inline:
HTML Code:
<td width="33%" valign="top" style="padding: 25px;">
Thanks for your help! Works!
Reply With Quote
  #106  
Old 12-30-2009, 11:30 PM
darsalles darsalles is offline
 
Join Date: Oct 2009
Posts: 45
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Could someone help me adding columns at both side of the content, but with the same style of the content bar??
Reply With Quote
  #107  
Old 12-31-2009, 10:41 AM
rEd86's Avatar
rEd86 rEd86 is offline
 
Join Date: May 2009
Location: United States
Posts: 23
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for a great tutorial. I have some custom pages I am creating and it only took a few minutes to do so by following this example code.

I didn't see this mentioned in the thread but there is one slight problem with the code as it exists. (or at least there was when I implemented it on my site)

In the php code, you load the page title in to variable pagetitle but in the template you have vboptions.bbtitle so the title for the page shows up as forums.

I changed the line in the template from:
<title>{vb:raw vboptions.bbtitle}</title>
to
<title>{vb:raw pagetitle}</title>

and it worked as expected.

Take care!

--Ed
Reply With Quote
  #108  
Old 12-31-2009, 05:02 PM
garretbyrne garretbyrne is offline
 
Join Date: Nov 2009
Location: Ireland
Posts: 111
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks Lynne it was extremely helpful and easy.. was able to create loads of pages in a matter of minutes... Cheers
Reply With Quote
  #109  
Old 12-31-2009, 10:29 PM
mandingo's Avatar
mandingo mandingo is offline
 
Join Date: Jun 2008
Posts: 307
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

How would I add my forum's sidebar,getting kinda stuck,brain turning to spaghetti.
a nudge in the right direction may be all I need.
Reply With Quote
  #110  
Old 01-01-2010, 02:00 PM
SuperGLS SuperGLS is offline
 
Join Date: Nov 2004
Posts: 126
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Couple questions about this one.

When I try to add any HTML code underneath the ###Your Custom Code Goes Here### section I get this error.

Parse error: syntax error, unexpected '<' in /home/elantrax/public_html/forums/cotm.php on line 41

When I just add regular text underneath the ###Your Custom Code Goes Here### section it only displays the word "text" no matter what I have typed in.

Here's the URL. Everything else seems to be working fine.

http://www.elantraxd.com/forums/cotm.php
Reply With Quote
  #111  
Old 01-01-2010, 02:49 PM
simon157 simon157 is offline
 
Join Date: Jul 2009
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi, could someone please, please help me as I'm struggling adding code containing php code to my template. It's driving me nuts !! The code I want to add is the following so it loads within the forum environment, but I'm completely stuck...

PHP Code:
<?php require_once('Connections2/databasecon.php'); ?>
<?php
$maxRows_usersightings 
15;
$pageNum_usersightings 0;
if (isset(
$_GET['pageNum_usersightings'])) {
  
$pageNum_usersightings $_GET['pageNum_usersightings'];
}
$startRow_usersightings $pageNum_usersightings $maxRows_usersightings;

mysql_select_db($database_databasecon$databasecon);
$query_usersightings "SELECT * FROM sightings ORDER BY id DESC";
$query_limit_usersightings sprintf("%s LIMIT %d, %d"$query_usersightings$startRow_usersightings$maxRows_usersightings);
$usersightings mysql_query($query_limit_usersightings$databasecon) or die(mysql_error());
$row_usersightings mysql_fetch_assoc($usersightings);

if (isset(
$_GET['totalRows_usersightings'])) {
  
$totalRows_usersightings $_GET['totalRows_usersightings'];
} else {
  
$all_usersightings mysql_query($query_usersightings);
  
$totalRows_usersightings mysql_num_rows($all_usersightings);
}
$totalPages_usersightings ceil($totalRows_usersightings/$maxRows_usersightings)-1;
?>
<div id="container">
<div style="padding-left: 10px; padding-top:5px;">
  <a href="index.php?pageid=sightingssubmit.php"><strong>Submit a sighting </strong></a> | <a href="index.php?pageid=Sightings.php"><strong>Show all sightings   </strong></a>|                           <a href="index.php?pageid=Sightings.php&<?php printf("%spageNum_usersightings=%d%s"$currentPagemax(0$pageNum_usersightings 1), $queryString_usersightings); ?>">Previous</a> | <span class="style55"><a href="index.php?pageid=Sightings.php&<?php printf("%spageNum_usersightings=%d%s"$currentPagemin($totalPages_usersightings$pageNum_usersightings 1), $queryString_usersightings); ?>">Next</a>
              
              <span class="style55">              </div>
<br />
<table width="95%" border="0" align="center" bgcolor="#FCFCFC">
<tr>
               <td bgcolor="#848E7B"><div align="left" class="style1">No.</div></td>
      <td bgcolor="#848E7B"><div align="left" class="style1">Species</div></td>
      <td bgcolor="#848E7B"><div align="left" class="style1">Date</div></td>
      <td bgcolor="#848E7B"><div align="left" class="style1">Location</div></td>
      <td bgcolor="#848E7B"><div align="left" class="style1">Recorder</div></td>
      <td bgcolor="#848E7B"><div align="left" class="style1">Details</div></td>
    </tr>
             <?php do { ?>
               <tr>
                 <td width="30" valign="top" bgcolor="#FFFff4"><div align="left" class="style131 "> <?php echo $row_usersightings['id']; ?></div></td>
                 <td width="150" valign="top" bgcolor="#FFFff4"><div align="left" class="style131"><?php echo $row_usersightings['species']; ?></div></td>
                 <td width="50" valign="top" bgcolor="#FFFff4"><div align="left" class="style131"><?php echo $row_usersightings['date']; ?></div></td>
                 <td width="120" valign="top" bgcolor="#FFFff4"><div align="left" class="style131"><?php echo $row_usersightings['location']; ?></div></td>
                 <td width="100" valign="top" bgcolor="#FFFff4"><div align="left" class="style131"><?php echo $row_usersightings['recorder']; ?></div></td>
                 <td width="350" valign="top" bgcolor="#FFFff4"><div align="left" class="style131"><?php echo $row_usersightings['Notes']; ?></div></td>
             </tr>
               <?php } while ($row_usersightings mysql_fetch_assoc($usersightings)); ?>
    </table>
</div>
Hope you can help

Simon
Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 04:12 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.05919 seconds
  • Memory Usage 2,401KB
  • Queries Executed 26 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (3)bbcode_code
  • (3)bbcode_html
  • (1)bbcode_php
  • (5)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_article
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (3)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (58)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete