PDA

View Full Version : [HOW TO - vB4] Create your own vBulletin page


JARNAR
06-01-2017, 04:48 PM
Hello,

I created my presentation page, but it does not work!

Following this guide:

https://vborg.vbsupport.ru/showthread.php?t=228112

Can you help me and correct the mistake?

This is my .php file (presentazione.php):
__________________________________________________ ________

<?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('{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>',
);

// 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('' => 'IRONLIFTING ? il forum che tratta tutte le Disciplide di Allenamento coi Sovraccarichi'));
$navbar = render_navbar_template($navbits);

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

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

$templater = vB_Template::create('{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>');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());

?>

__________________________________________________ ___________

Can you help my, please?

MarkFL
06-01-2017, 05:07 PM
I've moved your thread from the modifications area (those are for publishing vBulletin products/styles). I've also enclosed your PHP code in the appropriate tags to make it easier to read. :)

The main issue I see is that you're trying to define the templates by using the code rather than giving the template names. You need to use the Style Manager to create the templates in the Master Style, and then use their names in your PHP script.

JARNAR
06-01-2017, 05:33 PM
I've moved your thread from the modifications area (those are for publishing vBulletin products/styles). I've also enclosed your PHP code in the appropriate tags to make it easier to read. :)

The main issue I see is that you're trying to define the templates by using the code rather than giving the template names. You need to use the Style Manager to create the templates in the Master Style, and then use their names in your PHP script.


I don't know how do it. Can you correct it so that I understand, please? :)

MarkFL
06-01-2017, 05:55 PM
This code here:

{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>

You need to create a template, with that code in it. Suppose you create this template and name it "mytesttemplate"...then your external script would look like:

<?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('mytesttemplate');

// 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('' => 'IRONLIFTING ? il forum che tratta tutte le Disciplide di Allenamento coi Sovraccarichi'));
$navbar = render_navbar_template($navbits);

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

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

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

?>

Does this make sense? Do you know how to create a new template in your master style?

RichieBoy67
06-01-2017, 07:42 PM
I don't know how do it. Can you correct it so that I understand, please? :)

Go into the admincp under styles and under the main style click create template in the drop down menu.

Lynne
06-01-2017, 11:41 PM
You need to create a template, with that code in it. Suppose you create this template and name it "mytesttemplate"...then your external script would look like:


Actually, you need to name the template whatever you have called it in this line of your php file:

define('THIS_SCRIPT', 'test');
and again called in this line:
$templater = vB_Template::create('mytesttemplate');

According to the first line, you need to name the template "test". If you name it anything else, then it won't work. So, I think Mark corrected the template name on one line, but not the other. Both of those should be the same.

MarkFL
06-02-2017, 12:09 AM
Actually, you need to name the template whatever you have called it in this line of your php file:

define('THIS_SCRIPT', 'test');
and again called in this line:
$templater = vB_Template::create('mytesttemplate');

According to the first line, you need to name the template "test". If you name it anything else, then it won't work. So, I think Mark corrected the template name on one line, but not the other. Both of those should be the same.

I have always used one name for the script, and then other names for the templates rendered by the script. As long as the templates are specified in the $globaltemplates array, then they can be rendered without issue, at least that's been my experience. :)

For example, here's a very simple script I coded a while back for someone:

<?php

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

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

define('THIS_SCRIPT', 'inremembrance');
define('CSRF_PROTECTION', true);

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

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

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

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

// ###### YOUR CUSTOM CODE GOES HERE #####

$navbits = construct_navbits(array('' => $vbphrase['markfl_inremembrance_pagetitle']));
$navbar = render_navbar_template($navbits);
$pagetitle = $vbphrase['markfl_inremembrance_pagetitle'];

// ###### NOW THE TEMPLATES ARE BEING RENDERED ######

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

print_output($templater->render());

?>

Lynne
06-02-2017, 08:55 PM
I have always used one name for the script, and then other names for the templates rendered by the script. As long as the templates are specified in the $globaltemplates array, then they can be rendered without issue, at least that's been my experience. :)
ACK!!! My bad. I'm not sure what I was thinking - it's been a while since I have written a custom page and, um, uh, just forget what I said!!

JARNAR
06-03-2017, 04:42 AM
I managed to create the page, thank for your support!