Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 4 Articles
FAQ Community Calendar Today's Posts Search

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
  #112  
Old 01-01-2010, 03:02 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 mandingo View Post
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.
I have no idea how to add sidebars. That is a template thing and you can probably find a tutorial or mod that will show you the code to add to your template to do that.

Quote:
Originally Posted by SuperGLS View Post
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
You don't just add text in a php file. You need to assign it to a variable and then out put the variable in the template. Or, just put the text in the template.
Quote:
Originally Posted by simon157 View Post
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...

Hope you can help

Simon
You do not put php in templates. You put the php in the php page and then assign the output to a variable and put the variable in the template. Don't forget to register the variable for use in the template first.
Reply With Quote
  #113  
Old 01-01-2010, 03:07 PM
simon157 simon157 is offline
 
Join Date: Jul 2009
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks Lynne, but could you possibly help me with the coding for the first one. Once I have an idea then I will be able to cover the rest of my pages. Sorry, if I'm asking to much, but I'm by no means a programmer and new to vbulletin. Thanks very much.

Simon
Reply With Quote
  #114  
Old 01-01-2010, 03:16 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You should post out in the main forums for help with converting your code for use in a page (that really isn't what this article is about and your stuff will get lost in here among other posts). You may also want to look at how vbulletin does it in their pages. You will probably want a second template for your while loop stuff also.
Reply With Quote
  #115  
Old 01-01-2010, 03:52 PM
SuperGLS SuperGLS is offline
 
Join Date: Nov 2004
Posts: 126
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I see. So can you give me an example of what type of "stuff" should go underneath the ###### YOUR CUSTOM CODE GOES HERE ##### part of the xxxxxx.php file that you've instructed us to make?

EDIT- I know this is newb question!
Reply With Quote
  #116  
Old 01-02-2010, 07:39 AM
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Posts: 1,987
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by SuperGLS View Post
I see. So can you give me an example of what type of "stuff" should go underneath the ###### YOUR CUSTOM CODE GOES HERE ##### part of the xxxxxx.php file that you've instructed us to make?

EDIT- I know this is newb question!
There already is an example in the code given. Assigning a value to the variable $pagetitle, then registering $pagetitle for use in the template.
Reply With Quote
  #117  
Old 01-02-2010, 12:42 PM
SuperGLS SuperGLS is offline
 
Join Date: Nov 2004
Posts: 126
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ohhh, I think I understand now, so...

PHP 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', <<<<Change this to the template name (case sensitive)
);

// 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')); <<<<Change this to what you want to show in the navbar
$navbar 
render_navbar_template($navbits);

// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle 'My Page Title'; <<<<<Make 'My Page Title' the name of the .php file that you want to display & do NOT add any other code (html/php/whateverto this area.

// ###### 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());

?>
Make the template from the code in the first post, but don't change anything there, right?

Upload whatever .php file you want to call to the yoursite/forum/ folder.

So, does everything I've <<<<<'d next to and everything I've marked in red look ok? Thanks in advance!
Reply With Quote
  #118  
Old 01-02-2010, 02:09 PM
simon157 simon157 is offline
 
Join Date: Jul 2009
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
You should post out in the main forums for help with converting your code for use in a page (that really isn't what this article is about and your stuff will get lost in here among other posts). You may also want to look at how vbulletin does it in their pages. You will probably want a second template for your while loop stuff also.
I've posted my issue out in the forums as suggested but still no response. I've come to a complete stand still until I can get this sorted. Any chance of some help.

Thanks

Simon
Reply With Quote
  #119  
Old 01-02-2010, 02:20 PM
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Posts: 1,987
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by SuperGLS View Post
Ohhh, I think I understand now, so...
Sorry to say: No, you don't...

Quote:
Make the template from the code in the first post, but don't change anything there, right?

Upload whatever .php file you want to call to the yoursite/forum/ folder.
Both is wrong. Of course you can change the template, that's what templates are for, and the only php file is the one where you put the php-code from firstpost. Where it says to put your custom code, you need to put your custom code.

Have you tried to get it running as is, i.e. exactly like explained in the article before making any changes?

What exactly are you trying to do anyway? What php-code do you want to execute?
Reply With Quote
  #120  
Old 01-02-2010, 02:59 PM
simon157 simon157 is offline
 
Join Date: Jul 2009
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by cellarius View Post
Sorry to say: No, you don't...


Both is wrong. Of course you can change the template, that's what templates are for, and the only php file is the one where you put the php-code from firstpost. Where it says to put your custom code, you need to put your custom code.

Have you tried to get it running as is, i.e. exactly like explained in the article before making any changes?

What exactly are you trying to do anyway? What php-code do you want to execute?
I have the same problem Cellarius. I'm trying to run the following code in a new template and I've completely stuck. Can you help at all?? I've tried everything, but I'm not a coder.

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>
Thanks Simon
Reply With Quote
  #121  
Old 01-03-2010, 01:04 AM
SuperGLS SuperGLS is offline
 
Join Date: Nov 2004
Posts: 126
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by cellarius View Post
Sorry to say: No, you don't...
Haha, ok, don't feel bad, can't hurt my feelings!
Quote:
Originally Posted by cellarius View Post
Both is wrong. Of course you can change the template, that's what templates are for, and the only php file is the one where you put the php-code from firstpost. Where it says to put your custom code, you need to put your custom code.

Have you tried to get it running as is, i.e. exactly like explained in the article before making any changes?

What exactly are you trying to do anyway? What php-code do you want to execute?
I know you can change the template, but I don't need to change anything in it, right?

From what you are saying here I understand now I'm supposed to have just one template and one php file (the one included above that will include all of my custom code).

Right now I have it running exactly how it is. See here.

http://www.elantraxd.com/forums/cotm.php

The template works great and it seems ok, but whenever I try to add anything to the ###add your custom code### section of that PHP file I throw errors.

Maybe this isn't the right thing for me. I don't need to add php stuff I guess, just HTML code, but I figured that would still be possible. Guess not? If not that's ok too, I can jump on another solution. Basically I want it to look like this:

http://www.elantraxd.com/forums/misc...&template=cotm

I just found this HOW TO guide from Lynne after I used a different HOW TO guide to make that above. The reason I wanted to use this one from Lynne is because the URL would be a lot better.

So, am I out of luck or what? Thanks a great deal for any help!
Reply With Quote
Reply


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 10:55 AM.


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.07128 seconds
  • Memory Usage 2,428KB
  • 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
  • (1)bbcode_html
  • (2)bbcode_php
  • (10)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
  • (4)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