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
  #122  
Old 01-03-2010, 03:07 AM
cory_booth cory_booth is offline
 
Join Date: Jul 2006
Posts: 224
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I saw earlier instructions to take care of the WOL (Who's Online Location) display. It required editing a few standard VB files.
Seeing examples from plugins I thought I'd remention it here:

Create a plugin called XXXX WOL Process
Place it on the hook called: online_location_process
Insert the following code (edited to your needs)

PHP Code:
if ($filename == 'xxx.php')
$userinfo['activity'] = 'xxx'
Then create another plugin called XXX WOL Display
Place it on the hook called: online_location_unkown
Insert the following code (edited to your needs)

PHP Code:
if ($userinfo['activity'] == 'xxx'

$userinfo['where'] = "<a href='./xxx.php'>The link displayed</a>"
$userinfo['action'] = "What is displayed"
$handled true

Ofcourse in this plugin code, you can copy and paste over and over to cover the extra pages you have created.

All this does is:
1st, sets the "user activity" value based on the actual php file name.
2nd, when the WOL location is "unknown" then the script checks your custom php settings and if found - sets the user location display value and a link to the actual page.
Reply With Quote
  #123  
Old 01-03-2010, 03:36 AM
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 SuperGLS View Post
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
If you don't want any code, then that's fine. You could just add all html to the template and create a page with the url cotm.php. That's just fine.
Reply With Quote
  #124  
Old 01-03-2010, 05:49 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 know you can change the template, but I don't need to change anything in it, right?
That depends on what you want to achieve

Quote:
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).
That also depends. If the site you linked below is static (=plain html), you don't need any php code and all html code goes into the template.

Quote:
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.
It would be helpful for us to help if you simply would show us what you try to add.

Quote:
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.
As I said: php code goes into the php file, html code into the template. If you just dump html into the php file (as I suspect you did), you'll get errors.

Quote:
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.
You can easily do everything you can do with that other method what using this one, including what you want.

Quote:
So, am I out of luck or what? Thanks a great deal for any help!
Just show us the code you try to use, so we have something to talk about.
Reply With Quote
  #125  
Old 01-03-2010, 12:00 PM
SuperGLS SuperGLS is offline
 
Join Date: Nov 2004
Posts: 126
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ahhhhhhh! The HTML goes in the template (which is obvious now considering that's how I did it in the other HOW TO guide). Thanks to you both!

Now www.elantraxd.com/forums/cotm.php is working great! I just have to redo the HTML so it doesn't look so bad. Actually, one further question, if I want to set up this page using <div> codes and such instead of the outdated <table> codes where would I need to put any of the CSS info associated with that stuff?

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

CSS goes in the <head> If you are using CSS that is already defined (like the same CSS used on the index.php page) but not included in the headinclude template (like forumbits.css), then you can just include that same CSS template into your page:
PHP Code:
<link rel="stylesheet" type="text/css" href="{vb:var vbcsspath}css.php?sheet=forumbits.css" /> 
Reply With Quote
  #127  
Old 01-03-2010, 02:34 PM
Allan's Avatar
Allan Allan is offline
 
Join Date: Jun 2003
Location: France
Posts: 1,513
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

How add others pages 'within' current vBulletin files ?

as in this example: https://vborg.vbsupport.ru/showthread.php?t=62164
Reply With Quote
  #128  
Old 01-03-2010, 02:51 PM
SuperGLS SuperGLS is offline
 
Join Date: Nov 2004
Posts: 126
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks Lynne. I have much learning to do about CSS before I start down that path, thanks though.
Reply With Quote
  #129  
Old 01-03-2010, 08:01 PM
Allan's Avatar
Allan Allan is offline
 
Join Date: Jun 2003
Location: France
Posts: 1,513
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Allan View Post
How add others pages 'within' current vBulletin files ?

as in this example: https://vborg.vbsupport.ru/showthread.php?t=62164
Little dump ^^
Reply With Quote
  #130  
Old 01-04-2010, 01:33 AM
SuperGLS SuperGLS is offline
 
Join Date: Nov 2004
Posts: 126
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by cory_booth View Post
I saw earlier instructions to take care of the WOL (Who's Online Location) display. It required editing a few standard VB files.
Seeing examples from plugins I thought I'd remention it here:

Create a plugin called XXXX WOL Process
Place it on the hook called: online_location_process
Insert the following code (edited to your needs)

PHP Code:
if ($filename == 'xxx.php') <<<<<I changed this to 'extras.php'
$userinfo['activity'] = 'xxx'; <<<<<I changed this to 'extras' 
Then create another plugin called XXX WOL Display
Place it on the hook called: online_location_unkown
Insert the following code (edited to your needs)

PHP Code:
if ($userinfo['activity'] == 'xxx')  <<<<I changed this to 'extras'

$userinfo['where'] = "<a href='./xxx.php'>The link displayed</a>";  <<<<<I changed this to  <a href='./extras.php'>Extras</a>
$userinfo['action'] = "What is displayed"
$handled true

Ofcourse in this plugin code, you can copy and paste over and over to cover the extra pages you have created.

All this does is:
1st, sets the "user activity" value based on the actual php file name.
2nd, when the WOL location is "unknown" then the script checks your custom php settings and if found - sets the user location display value and a link to the actual page.
Cory, can you give any examples of what we should replace here? I've replaced what I think should be replaced but I still get the Unknown Location message. Take a look.



Thanks in advance.
Reply With Quote
  #131  
Old 01-04-2010, 02:28 AM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I do my WOL a little different and just added the code to the first post.
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 02:43 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.06063 seconds
  • Memory Usage 2,382KB
  • 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
  • (5)bbcode_php
  • (9)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