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
  #842  
Old 09-24-2008, 03:25 PM
GSXR GSXR is offline
 
Join Date: Sep 2008
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If you have more than one style, is it possible to use this on a style other than the predomanant style?

I can get it working hith the main style of my forum but if I create a new style and make a new template in the new style, all I get is a blank page.

Interestingly if I go to /forums/test/php?style=........whatever that style ID# is, I will get the page, HOWEVER, it changes the style of the forum to that ID style......
Reply With Quote
  #843  
Old 09-24-2008, 03:27 PM
soundbarrierpro soundbarrierpro is offline
 
Join Date: Nov 2007
Posts: 767
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by GSXR View Post
If you have more than one style, is it possible to use this on a style other than the predomanant style?

I can get it working hith the main style of my forum but if I create a new style and make a new template in the new style, all I get is a blank page.

Interestingly if I go to /forums/test/php?style=........whatever that style ID# is, I will get the page, HOWEVER, it changes the style of the forum to that ID style......
The templates have to be created in the new style as well. I don't know how or if they can be imported from your default or existing style you initially created the pages in.
Reply With Quote
  #844  
Old 09-24-2008, 08:57 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 soundbarrierpro View Post
I have 45 pages created this way and they all work. However, I can not get them to recognize permsission. I don't want unregistered users to have access, but everything I've tried to manipulate the code doesn't work. It seems unregistered users can still browse to these pages no matter what I do.

I created my php file and called it 'test' and configured according to the hack specs.

I went to ACP>Style & Templates>Style Manager>Clicked drop down on my style>Selected Add New template.

I added the code the hack specified and named the new template custom_test

The page is now accessible with this link http://www.yourdomain.com/misc.php?d...&template=test

as is all my other pages I created the same exact way
http://www.yourdomain.com/misc.php?d...template=test1
http://www.yourdomain.com/misc.php?d...template=test2

and so on and so on.

Again, all the pages work fine. I just need to know how to make them permission based to block unregistered users from being able to browse to them.
Have you tried just wrapping the content of the template in an if conditional? Maybe do the same for links to the page?
Reply With Quote
  #845  
Old 09-25-2008, 11:24 AM
soundbarrierpro soundbarrierpro is offline
 
Join Date: Nov 2007
Posts: 767
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Digital Jedi View Post
Have you tried just wrapping the content of the template in an if conditional? Maybe do the same for links to the page?
I've really tried with all of the replies made on this topic here. I've read every single page here and tried everything, but replies only seem to provide snippets. Do the conditionals go on the php file or the template? I tried everything on the php files. It seems extraordinarily simple for some here, but nothing works for me when I do it. I was entering the conditionals below the global statement. Can you put it in this code, so I can see exactly where it has to go and how it has to be edited? Thanks for your help.

This is one of the pages I got all the info to do the conditional. But everybody seems to have their own ideas and nothing worked for me. https://vborg.vbsupport.ru/showthrea...=62164&page=37

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') . '");'); 

?>
Reply With Quote
  #846  
Old 09-25-2008, 02:23 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 soundbarrierpro View Post
I've really tried with all of the replies made on this topic here. I've read every single page here and tried everything, but replies only seem to provide snippets. Do the conditionals go on the php file or the template? I tried everything on the php files. It seems extraordinarily simple for some here, but nothing works for me when I do it. I was entering the conditionals below the global statement. Can you put it in this code, so I can see exactly where it has to go and how it has to be edited? Thanks for your help.

This is one of the pages I got all the info to do the conditional. But everybody seems to have their own ideas and nothing worked for me. https://vborg.vbsupport.ru/showthrea...=62164&page=37
This is what I have under the START MAIN SCRIPT part of one of my pages where I only want users in usergroups 5, 6, and 32 to view the page. All others get a No Permission screen:
PHP Code:
if (!isset($vbulletin->userinfo['userid']) OR $vbulletin->userinfo['userid'] == OR !is_member_of($vbulletin->userinfo,5,6,32))
{
    
print_no_permission();

If you simply want it to block unregistered users, just remove the is_member_of part of the conditional:
PHP Code:
if (!isset($vbulletin->userinfo['userid']) OR $vbulletin->userinfo['userid'] == 0)
{
    
print_no_permission();

Reply With Quote
  #847  
Old 09-25-2008, 02:34 PM
soundbarrierpro soundbarrierpro is offline
 
Join Date: Nov 2007
Posts: 767
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Lynne,

Thank you for responding.

After 'literally' going through every single thread and carefully re-reading @ Digital Jedi's responses, I have figured it out. Although my links were working this way:
http://www.mywebsite.com/misc.php?do...te=downloads_1

As DJ said, I had created my templates wrong. I went back and re-config'd my templates as just "downloads_1" and added this right below "Start Main Script"

Code:
if ($show['guest']) 
    { 
        print_no_permission(); 

    }
now I can browse my pages as http://www.mysite.com/downloads_1.php etc. with permissions so that you must register.

Whoooo! Thanks everybody for your expert help and for straightening me out
Reply With Quote
  #848  
Old 09-27-2008, 06:10 PM
shahryar_neo shahryar_neo is offline
 
Join Date: Sep 2006
Posts: 76
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i got this error :


Unable to add cookies, header already sent.

Line: 1

and this is my page php code :

Code:
<?php
// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

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

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

);

// ######################### REQUIRE BACK-END ############################
require_once('./global.php');

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

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

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

?>
what's the problem ?
Reply With Quote
  #849  
Old 09-27-2008, 07:37 PM
Digital Jedi's Avatar
Digital Jedi Digital Jedi is offline
 
Join Date: Oct 2006
Location: PopCulturalReferenceLand
Posts: 5,171
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I notice your template is named chatbox. Are you trying to use combine this with another modification?
Reply With Quote
  #850  
Old 09-28-2008, 12:20 PM
shahryar_neo shahryar_neo is offline
 
Join Date: Sep 2006
Posts: 76
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Digital Jedi View Post
I notice your template is named chatbox. Are you trying to use combine this with another modification?
yes . i want to put the shoutbox code in the chatbox template and after that when a user go to chatbox.php see the chatbox in vBulletin page template .

============

Edited : My Problem Solved but new problem appear! now it cache a bit more ! for example i have to press Ctrl+F5 to see something new on it ! why it cached ?
Reply With Quote
  #851  
Old 09-28-2008, 09:23 PM
ru55ian's Avatar
ru55ian ru55ian is offline
 
Join Date: May 2007
Location: Canada
Posts: 94
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

hey all, after reading through this thread i am a little lost, i need to create a page with php code from linkmarket embedded into it .
I was able to the the page running, having trouble addign PHP code to it. anyone can help?

This is what i got for my template:

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

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">

<tr class="tcat">
  <td><strong>Resouces</strong></td>
</tr>

<tr>
    <td class="alt1">
<?php ../mylinks.php ?>


    </td>
</tr>
</table>

$footer
</body>
</html>
although adding php file is not helping as it's not showing up.

here is the code i need to add:

Code:
<?php

 /*
   Link Market Link Page Module
   Copyright 2003 Link Market, All Rights Reserved.

   WARNING: Do not changecode below or your link page will not work!
 */

 $user_id = "";

 $url = "http://api.linkmarket.com/mng_dir/get_links.php?user_id="
	    .$user_id."&cid=".$_GET['cid']."&start=".$_GET['start']."";

echo GetLMDSContent($url);

function GetLMDSContent($url)
{
$buffer = ""; 
$urlArr = parse_url($url);
if($urlArr[query])
{
$urlArr[query] = "?".$urlArr[query];
}

$fp = fsockopen($urlArr[host], 80, $errno, $errstr, 30);
if (!$fp){echo "$errstr ($errno)<br />\n";}
else
{
$out = "GET /".substr($urlArr[path], 1).$urlArr[query]." HTTP/1.0\r\n";
$out .= "Host: ".$urlArr[host]."\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp))
{
$buffer .= fgets($fp, 128);
} 
fclose($fp);
}

$buffer = strstr($buffer,"\r\n\r\n");

return $buffer;
}

?>
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 07:45 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.06556 seconds
  • Memory Usage 2,391KB
  • 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
  • (5)bbcode_code
  • (1)bbcode_html
  • (8)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
  • (4)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (5)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
  • (1)postbit_attachment
  • (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_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