Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 12-12-2013, 05:02 PM
sv1cec sv1cec is offline
 
Join Date: May 2004
Location: Athens, Greece
Posts: 2,091
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Conditionals in templates do NOT work

I am working on old hack I've build for vB 3.0.xx, which I would like to upgrade so that we can use it in our new vB 4.2.2 site and I have trouble making the conditionals inside the templates work.

For example, I have this template:

Code:
<html>
<head>
{vb:raw headinclude}
<title>$vboptions[bbtitle] - $pagetitle</title>
{vb:raw headinclude_bottom}
</head>
<body>
{vb:raw header}

<BR>
<vb:if condition="$bbuserinfo[userid]=='0'">

<table class="tborder" cellpadding="5" cellspacing="5" border="0" width="100%" align="center">
<tr>
	<td colspan="3">Guest - No Permissions</td>
</tr>
<tr>
	<td  colspan="3">Unable To View</td>
</tr>
<tr>
	<td colspan="3">Guests Are Unable To View This Page</td>
</tr>
</table>
<br/>

<vb:else />

$warn_page
<br />
</vb:if>

{vb:raw footer}
</body>
</html>
Nothing shows up. If I edit it and remove the conditional, then it works fine (OK, there are some formating issues but that's another thing).

So my question is: Is there something special that needs to be done, in the php side of things, in order for conditionals to work? I've noticed by studying the original code, that there is a ... templater section, for example:

Code:
$templater = vB_Template::create('register');
		$templater->register_page_templates();
		$templater->register('navbar', $navbar);
		$templater->register('birthdayfields', $birthdayfields);
		$templater->register('checkedoff', $checkedoff);
		$templater->register('customfields_option', $customfields_option);
		$templater->register('customfields_other', $customfields_other);
		$templater->register('customfields_profile', $customfields_profile);
		$templater->register('day', $day);
		$templater->register('email', $email);
		$templater->register('emailconfirm', $emailconfirm);
		$templater->register('errorlist', $errorlist);
		$templater->register('human_verify', $human_verify);
		$templater->register('month', $month);
		$templater->register('parentemail', $parentemail);
		$templater->register('password', $password);
		$templater->register('passwordconfirm', $passwordconfirm);
		$templater->register('referrername', $referrername);
		$templater->register('timezoneoptions', $timezoneoptions);
		$templater->register('url', $url);
		$templater->register('username', $username);
		$templater->register('year', $year);
		$templater->register('fbname', $fbname);
		$templater->register('fbprofileurl', $fbprofileurl);
		$templater->register('fbprofilepicurl', $fbprofilepicurl);
		$templater->register('fbimportform', $fbimportform);
	print_output($templater->render());
Can someone please explain what this section does? From its looks, it appears to me that it is passing parameters to the template, is that correct? Is this mandatory?

Many thanks for all help you can provide.
Reply With Quote
  #2  
Old 12-12-2013, 05:07 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

What do you mean by "nothing shows up"? Do you mean a blank page shows up or what?

Is $warn_page registered for use in the template? Nothing will show up for it if it isn't (and that is what the templater stuff is all about).
Reply With Quote
  #3  
Old 12-12-2013, 05:11 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Also, it should be changed to {vb:raw warn_page} (as well as being registered to the template).
Reply With Quote
2 благодарности(ей) от:
Lynne, Max Taxable
  #4  
Old 12-12-2013, 05:48 PM
sv1cec sv1cec is offline
 
Join Date: May 2004
Location: Athens, Greece
Posts: 2,091
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes, that's what I mean. A blank page. And no, I am not using the templater at all (didn't you understand my ignorance?!?!?! LoRL).

So let me understand that. Every variable that appears in a template, has to be passed via the templater? And am I correct in assuming that the first reference to the variable name (the one within the single quote) is the name with which the variable will be known in the template, while the second one (the one with the $ in front) is the variable name in php?

One more question, if a template is evaluated many times, let's say that it is evaluated several times, creating several <tr> rows in a table, can the templater be included in a while loop? Something doesn't work correctly, when I do that.

I knew there was something in that piece of code that was needed! LoRL
Reply With Quote
  #5  
Old 12-12-2013, 10:18 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Cellarius wrote a really good article that you may be interested in - [vB4] Rendering templates and registering variables - a short guide Near the bottom he talks about how to preregister a variable for use in a template (search on the word preregister).

If you are creating a variable that is a bunch of table rows (you are using .= to add to the variable?), then once you are out of the loop you will want to preregister the variable for use in a template. If you are rendering the template in the middle of the loop, then you would just use $templater->register right before you render it.
Reply With Quote
Благодарность от:
tbworld
  #6  
Old 12-13-2013, 07:03 AM
sv1cec sv1cec is offline
 
Join Date: May 2004
Location: Athens, Greece
Posts: 2,091
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Good Lord, thanks! I wonder why that article never popped up when I was googling this issue!

Lynne many thanks, I appreciate it.

And yes, I am using .= to add the table rows in a variable, but those table rows are generated from the eval of a template. The problem with the new vB approach for rendering templates is that if you use eval, you can't use conditionals inside the template, so you need to evaluate these conditionals in the php code.
Reply With Quote
  #7  
Old 12-13-2013, 09:48 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by sv1cec View Post
... The problem with the new vB approach for rendering templates is that if you use eval, you can't use conditionals inside the template, so you need to evaluate these conditionals in the php code.
Maybe I'm missing what you're saying, but that doesn't sound right. You shouldn't be using eval at all for your templates in vb4. And you should always be able to use conditionals in a template.
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 02:38 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04278 seconds
  • Memory Usage 2,227KB
  • Queries Executed 11 (?)
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
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_code
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (7)post_thanks_box
  • (3)post_thanks_box_bit
  • (7)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit
  • (7)post_thanks_postbit_info
  • (7)postbit
  • (7)postbit_onlinestatus
  • (7)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
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • 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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete