Variables disappear in template
I have a custom template that worked with vB 3, but now with vB 4, the variables are not being displayed. I noticed that they were still in the old syntax ($variable), so I put them into the new syntax ({vb:var variable}). With the old syntax, I saw the text of the variable name, but not the contents. With the new syntax, I see nothing.
I didn't write this template, but I am now the one to maintain it. What needs to happen between assigning the variable in profile.php and $templater->register('HTML', $page_templater->render());?
PHP Code:
if ($_REQUEST['do'] == 'mycustomaction')
{
$custom_variable = '<p>This is my custom variable.</p>';
construct_usercp_nav('custom');
$navbits[''] = "My Custom Page";
$page_templater = vB_Template::create('customaction');
}
if (!empty($page_templater))
{
// make navbar
$navbits = construct_navbits($navbits);
$navbar = render_navbar_template($navbits);
($hook = vBulletinHook::fetch_hook('profile_complete')) ? eval($hook) : false;
// add any extra clientscripts
$clientscripts = (isset($clientscripts_template) ? $clientscripts_template->render() : '');
if (!$vbulletin->options['storecssasfile'])
{
$includecss = implode(',', $includecss);
}
// shell template
$templater = vB_Template::create($shelltemplatename);
$templater->register_page_templates();
$templater->register('includecss', $includecss);
$templater->register('cpnav', $cpnav);
$templater->register('HTML', $page_templater->render());
$templater->register('navbar', $navbar);
$templater->register('navclass', $navclass);
$templater->register('onload', $onload);
$templater->register('pagetitle', $pagetitle);
$templater->register('template_hook', $template_hook);
$templater->register('clientscripts', $clientscripts);
print_output($templater->render());
}
Any help and insight is greatly appreciated. :-D
--------------- Added [DATE]1305760928[/DATE] at [TIME]1305760928[/TIME] ---------------
It took me a bit of time, but the solution was to make the first part like this.
PHP Code:
if ($_REQUEST['do'] == 'mycustomaction')
{
$custom_variable = '<p>This is my custom variable.</p>';
construct_usercp_nav('custom');
$navbits[''] = "My Custom Page";
$page_templater = vB_Template::create('customaction');
$page_templater->register('custom_variable', $custom_variable);
}
I tried the register in the lower part, before the render, then realized that $page_templater is what needed the variable registration. I hope this helps someone.
|