View Full Version : How can I define a vb:raw?
Duncan
10-25-2010, 12:08 AM
Hello,
I have a custom page and it is currently using this "{vb:raw navbar}" to display the navbar. This is working properly. I have created a new navbar template called navbar2. When I use "{vb:raw navbar2}" it does not display. It has the same effect as if it were removed completely. How can I define/match navbar2 template with {vb:raw navbar2}.
midnz
10-25-2010, 01:28 AM
Why don't you just force your custom page to use a new skin with a modified navbar?
Lynne
10-25-2010, 03:22 AM
Variables need to be registered for use in templates. $navbar2 hasn't been registered, therefore there is no output. Cellarius wrote a really good article that you may be interested in - [vB4] Rendering templates and registering variables - a short guide (https://vborg.vbsupport.ru/showthread.php?t=228078)
Duncan
10-25-2010, 05:17 AM
Thank you for the replies. My custom file has this at the bottom:
$templater = vB_Template::create('ncsu');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('navbar2', $navbar2);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());
And it is still not recognizing {vb:raw navbar2}
Lynne
10-25-2010, 02:48 PM
And where is navbar2 defined relative to that code? You really need to post all your code along with templates and hook names, etc in order for us to see what is wrong.
Duncan
10-26-2010, 08:01 PM
Thank you so much for helping me out lynn. Here are all of the files im referring to:
navbar2 (template) in the Default Style
<div id="navbar" class="navbar">
<ul id="navtabs" class="navtabs">
{vb:raw template_hook.navtab_start}
<vb:if condition="THIS_SCRIPT == 'home'">
<li class="selected"><a class="navtab" href="http://mydomain.com/">Home</a</li>
<vb:else />
<li><a class="navtab" href="http://mydomain.com">Home</a></li>
</vb:if>
{vb:raw template_hook.navtab_middle}
<vb:if condition="THIS_SCRIPT == 'about'">
<li class="selected"><a class="navtab" href="http://mydomain/about/">About</a</li>
<vb:else />
<li><a class="navtab" href="http://mydomain.com/about/">About</a></li>
</vb:if>
<vb:if condition="THIS_SCRIPT == 'members'">
<li class="selected"><a class="navtab" href="http://mydomain.com/members/">Members</a</li>
<vb:else />
<li><a class="navtab" href="http://mydomain.com/members/">Members</a></li>
</vb:if>
<vb:if condition="THIS_SCRIPT == 'rules'">
<li class="selected"><a class="navtab" href="http://mydomain.com/rules/">Rules</a</li>
<vb:else />
<li><a class="navtab" href="http://mydomain/rules/">Rules</a></li>
</vb:if>
<vb:if condition="THIS_SCRIPT == 'privacy'">
<li class="selected"><a class="navtab" href="http://mydomain.com/privacy/">Privacy</a</li>
<vb:else />
<li><a class="navtab" href="http://mydomain.com/privacy/">Privacy</a></li>
</vb:if>
<vb:if condition="THIS_SCRIPT == 'contact'">
<li class="selected"><a class="navtab" href="http://mydomain.com/contact/">Contact</a</li>
<vb:else />
<li><a class="navtab" href="http://mydomain.com/contact/">Contact</a></li>
</vb:if>
{vb:raw template_hook.navtab_end}
</ul>
</div>
</div><!-- closing div for above_body -->
<div class="body_wrapper">
<div id="breadcrumb" class="breadcrumb">
<ul class="floatcontainer">
<li class="navbithome"><a href="http://mydomain.com/"><img src="{vb:stylevar imgdir_misc}/navbit-home.png" alt="{vb:rawphrase home}" /></a></li>
{vb:raw navbits.breadcrumb}
{vb:raw navbits.lastelement}
</ul>
<hr />
</div>
{vb:raw ad_location.ad_navbar_below}
{vb:raw ad_location.global_below_navbar}
<vb:if condition="$show['notices'] AND THIS_SCRIPT != 'register'">
<form action="profile.php?do=dismissnotice" method="post" id="notices" class="notices">
<input type="hidden" name="do" value="dismissnotice" />
<input type="hidden" name="s" value="{vb:raw session.sessionurl}" />
<input type="hidden" name="securitytoken" value="{vb:raw bbuserinfo.securitytoken}" />
<input type="hidden" id="dismiss_notice_hidden" name="dismiss_noticeid" value="" />
<input type="hidden" name="url" value="{vb:raw return_link}" />
<ol>
{vb:raw notices}
</ol>
</form>
</vb:if>
ncsu (template) in the Default Style
The {vb:raw navbar2} I want to display the navbar2 listed above
{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 navbar2}
{vb:raw ncsu}
{vb:raw footer}
</body>
</html>
ncsu.php file
Notice I tried to register the navbar2 style but ultimately failed.
<?php
// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
// #################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT', 'ncsu');
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('ncsu',
);
// 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 ('/home/college/public_html');
require_once('./global.php');
// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################
$navbits = construct_navbits(array('' => 'NCSU'));
$navbar = render_navbar_template($navbits);
// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle = 'NCSU';
// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######
$templater = vB_Template::create('ncsu');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('navbar2', $navbar2);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());
?>
Lynne
10-27-2010, 04:20 AM
But you never did anything to create navbar2. You never define it or anything. You need to write some code to spit it all out into a variable called $navbar2.
Duncan
10-27-2010, 10:44 PM
Ahh okay, do I define it in the ncsu.php file? I looked and navbar has:
$navbar = render_navbar_template($navbits);
so, I tried using $navbar2 = render_navbar2_template; but it didn't work :/
Lynne
10-28-2010, 01:29 AM
Did you try looking up that function? It's in the functions.php file. It renders the navbar template. If you want to render the template navbar2, you should probably copy that function, only call it something different, and render the navbar2 template.
Duncan
10-29-2010, 01:07 AM
Thanks for the response Lynn. In the functions.php file all I can find is:
$navbits = construct_navbits(array('' => $vbphrase['vbulletin_message']));
$navbar = render_navbar_template($navbits);
and this
$navbits = $navbar = '';
and this
function render_navbar_template($navbits)
Sorry for being such a hassle, just trying to figure it out. But all I want to do is make my navbar2 template display using navbar2 variable not insert navbits, etc. (or do i?)
Lynne
10-29-2010, 02:21 AM
Yeah, the function is called render_navbar_template. You'll need that code. Put it into your file only rename it (render_navbar_template2 perhaps) and then change your other line:
$navbar2 = render_navbar_template2($navbits);
Something like that.
Duncan
10-29-2010, 07:55 AM
Eek. Still can't figure it out. Getting this error:
Parse error: syntax error, unexpected T_VARIABLE, expecting '( in "mywebsitestructure" on line 39. Here is the code:
<?php
// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
// #################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT', 'ncsu');
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('ncsu',
);
// 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 ('/home/college/public_html');
require_once('./global.php');
// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################
$navbits = construct_navbits(array('' => 'NCSU'));
$navbar = render_navbar_template($navbits);
function render_navbar_template2
$navbar2 = render_navbar_template2($navbits);
// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle = 'NCSU';
// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######
$templater = vB_Template::create('ncsu');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('navbar2', $navbar2);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());
?>
I guess I just don't understand how it knows to render the navbar2 template??
Lynne
10-29-2010, 01:57 PM
You didn't create a new function. You need to copy the *whole* function and then change the name of it.
Duncan
10-29-2010, 09:24 PM
Lynn, thanks for your help. I got it working, miraculously!
Lynne
10-29-2010, 10:37 PM
Glad you did. :)
Lynne,
Thanks for the help!
Okay so I created a new template navbar2, then I need to place the rendering code INTO that new template?
:/
Sorry, again, I am not a coder :(
Lynne
11-04-2010, 09:35 PM
You put all your html into the new template. The rendering code is going to go into a plugin - most likely some global_* hook location (or into the page if it is a custom page).
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.