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

Reply
 
Thread Tools
How to create your own vBulletin-powered page! (uses vB templates)
Gary King's Avatar
Gary King
Join Date: Jan 2002
Posts: 2,046

 

Show Printable Version Email this Page Subscription
Gary King Gary King is offline 03-03-2004, 10:00 PM

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:
<?php

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

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS'1);
define('THIS_SCRIPT''test'); // 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 ############################
require_once('./global.php');

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

$navbits = array();
$navbits[$parent] = 'Test Page';

$navbits construct_navbits($navbits);
eval(
'$navbar = "' fetch_template('navbar') . '";');
eval(
'print_output("' fetch_template('TEST') . '");');

?>
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).

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>
All done
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:
    case 'bugs.php':
        
$userinfo['activity'] = 'bugs';
        break; 
Below, add:
PHP Code:
    case 'test.php':
        
$userinfo['activity'] = 'test';
        break; 
(Be sure to change the values to your own!)

Then find:
PHP Code:
        case 'modcplogin':
            
$userinfo['action'] = $vbphrase['moderator_control_panel_login'];
            break; 
Below add:
PHP Code:
        case 'test':
            
$userinfo['action'] = 'Viewing Test Page';
            break; 
All done!

----------------------------------

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:
if ($_REQUEST['do'] == 'xxx')
{
    eval(
'print_output("' fetch_template('TEMPLATE_XXX') . '");');

Replace 'xxx' with whatever you want ?do= in the query string to be (for example, replace 'xxx' with 'showprofile' so then someone would type in example.php?do=showprofile to view this template.) Then of course, change TEMPLATE_XXX to your template name, it's that simple!


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
Attached Images
File Type: jpg template_test.jpg (62.5 KB, 0 views)
Reply With Quote
  #782  
Old 07-24-2008, 06:04 PM
Sergio68's Avatar
Sergio68 Sergio68 is offline
 
Join Date: Nov 2001
Location: Italy
Posts: 100
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Stryker412 View Post
How can you get your page to auto adapt to the current theme a user is running (ie. font and panel colors)?
Be careful, this is not the correct and safe way to do it, but if you build your test.php page like this :

PHP Code:
<?php

error_reporting
(E_ALL & ~E_NOTICE); 
define('NO_REGISTER_GLOBALS'1); 
define('GET_EDIT_TEMPLATES'true); 
define('THIS_SCRIPT''releases'); 
$phrasegroups = array(); 
$specialtemplates = array(); 
$globaltemplates = array(); 
$actiontemplates = array(); 
// require_once('./includes/vba_cmps_include_template.php');
// chdir('/srv/www/www.bodyweb.it/forums/');
 
require_once('./global.php'); 
// $vbulletin->options['homeurl'];
        
$navbits = array(); 
        
$navbits[''] = 'Prodotti'
        
$navbits construct_navbits($navbits); 
        eval(
'$navbar = "' fetch_template('navbar') . '";'); 
      
//  eval('print_output("' . fetch_template('prodotti') . '");'); 

     // **** include code
    //  **** Template HTML echo instead of   eval template and plugin ****

      
echo"
      
$stylevar[htmldoctype]
<html dir='
$stylevar[textdirection]' lang='$stylevar[languagecode]'>
<head>
<title>
$vboptions[bbtitle] -  Prodotti</title>
$headinclude
<script type='text/javascript' src='./forums/clientscript/vbulletin_global.js'></script>
<script type='text/javascript' src='./forums/clientscript/vbulletin_menu.js '></script>
</head>
$header
$navbar


//  **** more code.


$footer
</body>
</html>"
;
      
      
       
      
?>
You just need one page, you can also include part of header template and footer template
Reply With Quote
  #783  
Old 07-24-2008, 10:49 PM
Digital Jedi's Avatar
Digital Jedi Digital Jedi is offline
 
Join Date: Oct 2006
Location: PopCulturalReferenceLand
Posts: 5,171
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Sergio68 View Post
Be careful, this is not the correct and safe way to do it, but if you build your test.php page like this :

PHP Code:
<?php

error_reporting
(E_ALL & ~E_NOTICE); 
define('NO_REGISTER_GLOBALS'1); 
define('GET_EDIT_TEMPLATES'true); 
define('THIS_SCRIPT''releases'); 
$phrasegroups = array(); 
$specialtemplates = array(); 
$globaltemplates = array(); 
$actiontemplates = array(); 
// require_once('./includes/vba_cmps_include_template.php');
// chdir('/srv/www/www.bodyweb.it/forums/');
 
require_once('./global.php'); 
// $vbulletin->options['homeurl'];
        
$navbits = array(); 
        
$navbits[''] = 'Prodotti'
        
$navbits construct_navbits($navbits); 
        eval(
'$navbar = "' fetch_template('navbar') . '";'); 
      
//  eval('print_output("' . fetch_template('prodotti') . '");'); 

     // **** include code
    //  **** Template HTML echo instead of   eval template and plugin ****

      
echo"
      
$stylevar[htmldoctype]
<html dir='
$stylevar[textdirection]' lang='$stylevar[languagecode]'>
<head>
<title>
$vboptions[bbtitle] -  Prodotti</title>
$headinclude
<script type='text/javascript' src='./forums/clientscript/vbulletin_global.js'></script>
<script type='text/javascript' src='./forums/clientscript/vbulletin_menu.js '></script>
</head>
$header
$navbar


//  **** more code.


$footer
</body>
</html>"
;
      
      
       
      
?>
You just need one page, you can also include part of header template and footer template
All you really need to do is make a template for each respective style on your forum, using this same tutorial.
Reply With Quote
  #784  
Old 07-25-2008, 02:16 PM
Sergio68's Avatar
Sergio68 Sergio68 is offline
 
Join Date: Nov 2001
Location: Italy
Posts: 100
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Digital Jedi View Post
All you really need to do is make a template for each respective style on your forum, using this same tutorial.
Ok, and how to include and execute PHP code into the template?
Reply With Quote
  #785  
Old 07-25-2008, 04:17 PM
Digital Jedi's Avatar
Digital Jedi Digital Jedi is offline
 
Join Date: Oct 2006
Location: PopCulturalReferenceLand
Posts: 5,171
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

No idea. I'm just responding the to the question about how to have a users style show up on that page. In fact, if you have multiple styles, you have to make a template for each style, otherwise you get a blank page.
Reply With Quote
  #786  
Old 07-26-2008, 06:57 AM
amcd amcd is offline
 
Join Date: Oct 2004
Posts: 218
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If you have multiple styles, ideally they should be in a heirarchy. Just add the template to the top level and it will be inherited by child styles.

The question of how to execute php from templates is being asked frequently. The answer is that you cannot. It is not supposed to be that way. The primary objective of templating is to separate logic (php) from presentation (templates).

Search for my posts in this thread. I have explained the whole thing with code examples.
Reply With Quote
  #787  
Old 07-26-2008, 11:57 AM
Sergio68's Avatar
Sergio68 Sergio68 is offline
 
Join Date: Nov 2001
Location: Italy
Posts: 100
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by amcd View Post
If you have multiple styles, ideally they should be in a heirarchy. Just add the template to the top level and it will be inherited by child styles.

The question of how to execute php from templates is being asked frequently. The answer is that you cannot. It is not supposed to be that way. The primary objective of templating is to separate logic (php) from presentation (templates).

Search for my posts in this thread. I have explained the whole thing with code examples.
I knew, it was a rhetorical question, this is why I was looking for shortcuts.
By the way, you can execute code in a plugin but it's a p.i.t.a.
Reply With Quote
  #788  
Old 07-27-2008, 06:54 AM
Goomzee Goomzee is offline
 
Join Date: Apr 2008
Location: Philippines
Posts: 588
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

this is my php file code

Quote:
<?php

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

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'mk1'); // 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(
'MK1',
);

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

);

// ######################### REQUIRE BACK-END ############################

chdir('/home/username/public_html/content/mkgames/mk1/');
require_once('./global.php');


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

$navbits = array();
$navbits[$parent] = 'MK1';

$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('TEST') . '");');

?>
__________________
a

and this my Template Code

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

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
<td class="tcat"><center>Mortal Kombat Shaolin Monks Play Station2 Guide</center>
</td>
</tr>
</table>
<p><strong>Unlock Mortal Kombat II</strong><br>

$footer
</body>
</html>
Templaet Naem is MK1

but nothing working since 4 month
Reply With Quote
  #789  
Old 07-27-2008, 07:06 AM
amcd amcd is offline
 
Join Date: Oct 2004
Posts: 218
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Code:
 $navbits = array();
$navbits[$parent] = 'MK1';

$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('TEST') . '");');
change this to

Code:
 $navbits = array();
$navbits[$parent] = 'Mortal Combat blah blah';

$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('MK1') . '");');
Reply With Quote
  #790  
Old 07-28-2008, 03:31 AM
Goomzee Goomzee is offline
 
Join Date: Apr 2008
Location: Philippines
Posts: 588
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i did but not working
Reply With Quote
  #791  
Old 07-28-2008, 04:37 AM
Digital Jedi's Avatar
Digital Jedi Digital Jedi is offline
 
Join Date: Oct 2006
Location: PopCulturalReferenceLand
Posts: 5,171
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Goomzee View Post
this is my php file code




and this my Template Code



Templaet Naem is MK1

but nothing working since 4 month
PHP Code:
 eval('print_output("' fetch_template('TEST') . '");'); 
You never changed TEST on this line to your template name.
Reply With Quote
  #792  
Old 07-28-2008, 05:02 AM
amcd amcd is offline
 
Join Date: Oct 2004
Posts: 218
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Digital Jedi View Post
PHP Code:
 eval('print_output("' fetch_template('TEST') . '");'); 
You never changed TEST on this line to your template name.
What's what I told him, too. But he said it doesn't work.
Reply With Quote
  #793  
Old 07-28-2008, 05:11 AM
Digital Jedi's Avatar
Digital Jedi Digital Jedi is offline
 
Join Date: Oct 2006
Location: PopCulturalReferenceLand
Posts: 5,171
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by amcd View Post
What's what I told him, too. But he said it doesn't work.
Yes, but for some reason you also told him to change

PHP Code:
$navbits[$parent] = 'MK1'
to
PHP Code:
 $navbits[$parent] = 'Mortal Combat blah blah'
Which is likely why it didn't work.

Quote:
Originally Posted by amcd View Post
Code:
 $navbits = array();
$navbits[$parent] = 'MK1';
 
$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('TEST') . '");');
change this to

Code:
 $navbits = array();
$navbits[$parent] = 'Mortal Combat blah blah';
 
$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('MK1') . '");');
Reply With Quote
  #794  
Old 07-28-2008, 12:16 PM
Goomzee Goomzee is offline
 
Join Date: Apr 2008
Location: Philippines
Posts: 588
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i don;t understand why it's not working where as file is still there
Reply With Quote
  #795  
Old 07-28-2008, 01:14 PM
Digital Jedi's Avatar
Digital Jedi Digital Jedi is offline
 
Join Date: Oct 2006
Location: PopCulturalReferenceLand
Posts: 5,171
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

In chdir('/home/username/public_html/content/mkgames/mk1/');, did you actually put in your username, or did you just leave it like this?
Reply With Quote
  #796  
Old 07-28-2008, 05:27 PM
amcd amcd is offline
 
Join Date: Oct 2004
Posts: 218
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Goomzee View Post
i don;t understand why it's not working where as file is still there
A completely blank page usually means php error. See the php error log.
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:20 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.06224 seconds
  • Memory Usage 2,463KB
  • Queries Executed 31 (?)
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
  • (4)bbcode_code
  • (1)bbcode_html
  • (12)bbcode_php
  • (11)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
  • (16)post_thanks_box
  • (5)post_thanks_box_bit
  • (16)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (16)post_thanks_postbit_info
  • (15)postbit
  • (1)postbit_attachment
  • (16)postbit_onlinestatus
  • (16)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_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete