Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 2.x > vBulletin 2.x Full Releases
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Advanced Templates: Dynamic Templates Changing according to different conditions Details »»
Advanced Templates: Dynamic Templates Changing according to different conditions
Version: 1.00, by Logician Logician is offline
Developer Last Online: Nov 2023 Show Printable Version Email this Page

Version: 2.2.x Rating:
Released: 09-07-2002 Last Update: Never Installs: 141
 
No support by the author.

This hack allows you to design dynamic vb templates which change themselves according to different conditions. Thus you can customize your board very powerfully with "intelligent/interactive" templates. It uses the same "conditional concept" just like my Webtemplates and Dynamic Forum Announcements Hack. With conditionals you can program your templates to:
  • be displayed differently to different users.
  • hide/display some part/texts/html codes/even the entire template for some users
  • include extra text/HTML codes/secret messages inside which will be displayed if page visitor matches your pre-configured criterias
  • Have multi-templates inside 1 template and each of them will be parsed and displayed only if their set condition applies.
You can program your templates according to many different criteria, such as:
  • user's userid
  • user's usergroup
  • user's profile fields' input
  • user's post number
  • user's last visit time
  • user's seniority (register date)
  • today's date, day, month, week, year, hour, second, if today is user's birthday
  • user's is visibility status
  • style id user's using
  • user's cookie status
  • user's time settings
  • (in forumdisplay templates) forum id
  • (in showthread templates) thread id
  • etc.
Some practical examples about what you can do with this hack:
  • You can have different postbit templates for different users/usergroups.
  • Display your board differently to the user if it's his birthday, if he is X, if he age <Y, if he didnt visit your board since Z etc.
  • Display Admin Only Profile fields/or any profile fields in postbit if X condition applies
  • You can hide Admin only links in your templates such as "Show IP".
  • Disable Email/Pm User links in postbit or userprofile screen if reader is from usergroup X etc.
  • Send different email text to different users according to different criteria. Add hidden email texts if X condition applies
  • Hide "register" link if user is not a guest, add access to pm if user is not a guest
  • Ban some templates if X condition applies such as dont display profile screens if user's X profile field = Y
  • Disable some forums if today is X day or hour is Y
  • Dont display thread view/user count/last reply date if user's usergroup is X
  • Hide threads according to different criteria in showthread templates
Well there are literally millions of possibilities you can apply, so please use your imagination for more examples..

The Hack's Features:
  • Installation is VERY easy: Actually 2 steps in 1 file will take less than 1 minute..You will be surprised how such a small modification will make such a big difference in your board.
  • It's compatible with ALL vb versions I know
  • The hack covers all the templates in your database: ie. custom templates, ALL vbulletin templates including even emails and error messages etc.
  • It's fully compatible with all your installed hacks and their custom templates too.
  • It makes many small hacks obsolete because you can now modify your templates to achieve the same result instead of hacking your board (=changing .php files)

Vbulletin v.3 has been announced to have "conditional" concept in templates, however my hack wasn't inspired by it at all, because I'm using the conditionals in my Webtemplates hack since March 2002 so in fact vb developers might be inspired by me. My Dynamic Forum Announcements hack uses the same concept for forum home announcements too.. (Wait for my other hacks depending on conditionals cause I really like them, they are really powerful and customizable)

Performance Issues
The hack does NOT add any MYSQL connections. It just process your already retrieved templates in a function to parse the hack conditionals. Thus the performance is IMO quite bearable. However please notice that if a template has a conditional in it, the hack have to parse it before displaying it and technically this parsing is done with PHP's preg_match command which is known as a powerful but slow command. So does it cause any performance problems? In most cases no. But if the conditionals are applied in a very frequently used and/or long template and/or you used too many conditionals in one template AND your traffic or server load is high, this MAY increase your PHP processing time whenever this template is displayed as the hack has to deal with the conditionals everytime this template is called. I suggest applying Teck's Microstat's hack and observe the PHP running time with that hack after you applied a conditional especially in a frequently used template (eg. postbit). If it slows down the display, simply reduce your conditional count in that template or delete the conditional or remove the hack altogether. Personally I dont have any performance problems in my own board related to this hack but just wanted to give my 2 cents anyway especially for high-traffic boards..

If you liked the hack (I guess you will), I strongly suggest checking out my Webtemplates hack which provides exactly the same feature for your NON-VB pages.

Also please click INSTALL if you use the hack, thank you..

09.Sep.2002 Bug Fix: If you installed the hack before 09.Sep.2002 please download the instructions again and reapply step 2, since I made an update for a small bug fix. There was a variable name collision which causes a problem with email validation screen which uses the same variable so I changed my variable's name. If you are downloading the hack now, go ahead.. The code you download is already fixed..
07.Oct.2002 UPDATE: I updated the hack code, so that people who have enabled template debugging in their Admin CP/vb Settings can also use the hack. Also small modification applied to increase template parsing time. If you installed the hack before my update, you may choose to reinstall (not necessary). If you are a new hack user, the instructions you download is already new version's.

Enjoy!
Logician \\=^))

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #2  
Old 09-08-2002, 05:19 PM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Screenshot?

umm what kind of screenshot I can provide you is not clear to me Still reserved in case someone has an idea though.. lol
Reply With Quote
  #3  
Old 09-08-2002, 05:20 PM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

After you installed the hack, you can apply some of these template modifications which you may enjoy. Please share your useful template modifications with other hack users in the thread and if you get the concept please help me out answering questions regarding conditionals here. Thank you!

BTW. Some examples may seem irrelevant to you but please notice that my intention is also to give you conditional samples so that you get the grips.

Hide attachments in the thread from viewer if his registration date is newer than 2 weeks:
edit template postbit_attachment and just in the begining add: [[($bbuserinfo[joindate]>strtotime(-2 weeks)]] and at the end add its closing tag: [[/($bbuserinfo[joindate]>strtotime(-2 weeks)]]

Displays poster profile field 1 in postbit to Admins: (So you can access Admin only fields of user in postbit)
Edit postbit template add
PHP Code:
[[(bbuserinfo[usergroupid]==6)]]<smallfont>Admin Only info$post[field1]</smallfont>[[/(bbuserinfo[usergroupid]==6)]] 

Hides User's Username in postbit if viewer is a guest
Edit postbit template replace $post[username] as
PHP Code:
[[(bbuserinfo[usergroupid]>1)]]$post[username][[/(bbuserinfo[usergroupid]>1)]] 
Hide thread X in showthread if user id is Y add [[($threadid!=X AND userid!=Y)]] in the begining of showthread template add its closing tag in the end: [[/($threadid!=X AND userid!=Y)]]

Send entire message text with notification mail if forumid is Y
edit email_notify add: [[($foruminfo[forumid]==Y)]]$message[[/($foruminfo[forumid]==Y)]]
Reply With Quote
  #4  
Old 09-08-2002, 05:20 PM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Conditionals Help

If you are using my WebTemplates Hack or Dynamic Announcements: Programmable Forum Home Announcement/Message with conditionals Hack, this hack's conditionals are exactly same with these hacks'.

Here is the conditional syntax: (it's strict in syntax so please apply correctly!)
[[(your conditional)]]
HTML code posted in template if condition applies
[[/(your conditional)]]

Conditional Rules:

* Conditionals are covered inside [[ ]] tags
* Conditional (both opening and closing) itself is in paranthesis ( )
* HTML codes are written in between the conditional tags and they are displayed in the template if condition applies
* Opening and closing conditional are exactly same except closing conditional has a / right before (
* If you are trying to check if X equals to Y, use DOUBLE equation mark not single. eg. Correct: X==Y Incorrect:X=Y
* You can design as many conditional as you like. If more than 1 condition applies at the same time, ALL applying conditionals HTML codes are parsed and all not-applied conditionals and their HTML code is automatically deleted when template is displayed.

Some examples will help you understand the rules better. Here are some conditionals and their instruction texts which explains what that conditional do: (Consider HTML codes is in between instead of instruction texts and they are parsed if condition applies)

* [[($bbuserinfo[userid]==32)]] Display this HTML code if page visitor's user id is 32 [[/($bbuserinfo[userid]==32)]]

* [[($bbuserinfo[usergroupid]==5)]] Display this HTML code if page visitor's usergroupid is 5 (=if he is a Super Mod) [[/($bbuserinfo[usergroupid]==5)]]

* [[($bbuserinfo[usergroupid]==1)]] Display this HTML code if page visitor is a guest [[/($bbuserinfo[usergroupid]==1)]]

* [[($bbuserinfo[userid]>1)]] Display this HTML code if page visitor is NOT a guest [[/($bbuserinfo[userid]>1)]]

* [[($bbuserinfo[usergroupid]==5 OR $bbuserinfo[usergroupid]==6 OR $bbuserinfo[usergroupid]==7)]] Display this HTML code if page visitor's a Super Mod OR a Mod OR an Admin [[/($bbuserinfo[usergroupid]==5 OR $bbuserinfo[usergroupid]==6 OR $bbuserinfo[usergroupid]==7)]]

* [[($bbuserinfo[posts]<10)]] Display this HTML code if page visitor has less than 10 posts [[/($bbuserinfo[posts]<10)]]

* [[($bbuserinfo[lastvisit] and $bbuserinfo[lastvisit]<strtotime("-30 days"))]]Display this HTML code if page visitor has not visited your board for 30 days[[/($bbuserinfo[lastvisit] and $bbuserinfo[lastvisit]<strtotime("-30 days"))]]

* [[($bbuserinfo[joindate]>strtotime("-2 weeks") AND $bbuserinfo[joindate]<strtotime("-4 weeks"))]]Display this HTML code if page visitor registered in a date between 2 weeks to 4 weeks from now[[/($bbuserinfo[joindate]>strtotime("-2 weeks") AND $bbuserinfo[joindate]<strtotime("-4 weeks"))]]

You can use conditionals together too. Here is an example:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[[($bbuserinfo[userid]==32)]] HTML Codes 1[[/($bbuserinfo[userid]==32)]]
[[($bbuserinfo[usergroupid]==3)]] HTML Codes 2 [[/($bbuserinfo[usergroupid]==3)]]
HTML Codes 3
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
When this template is called the hack will :
Display HTML Codes 1, if user's userid = 32
Display HTML Codes 2, if user's usergroupid = 3 (=email confirmation waiting members)
and always display HTML Codes 3 (it's out of conditionals)

What if user 32 is also from user groupid 3? He will be BOTH displayed HTML Code 1 AND 2 because both conditionals are parsed if they applies.

Another example of how you can design a multi-template:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[[($bbuserinfo[posts]<30)]]

<Your Templates default HTML Code here >

[[/($bbuserinfo[posts]<30)]]
[[(!($bbuserinfo[posts]<30))]]

You dont have permission to access this page!

[[/(!($bbuserinfo[posts]<30))]]
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
When you use this code in any of your template, if page visitor's post number is less than 30, he will be displayed "You dont have permission to access this page!" but any other users will see the template.

My Support for this hack: Just like all my other hacks I support this hack for any installation problems, bugs etc. (very unlikely there will be any) but as you would hopefully understand it's impossible for me to support the hack about forming your "conditionals". I give you detailed how-to instructions and samples and but there can be thousands of conditional designs people might ask for and it's not possible for me to answer all the time one by one. I dont discourage you to ask them away here in this thread so be my guest if you need help, but please forgive me if I cant personally answer you about these requests and I hope that other hack users will help out in the thread for these requests.. (While asking it can help if you give your failed samples).. Thanks for understanding..
Reply With Quote
  #5  
Old 09-08-2002, 05:22 PM
Chris M's Avatar
Chris M Chris M is offline
 
Join Date: Dec 2001
Location: Northampton, England
Posts: 6,186
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Very cool

*installs*

Satan
Reply With Quote
  #6  
Old 09-08-2002, 05:28 PM
assassingod's Avatar
assassingod assassingod is offline
 
Join Date: Jul 2002
Posts: 3,337
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Aww man, this is Ace! Brilliant work! Gonna instal this!!
Reply With Quote
  #7  
Old 09-08-2002, 05:52 PM
Tim Wheatley's Avatar
Tim Wheatley Tim Wheatley is offline
 
Join Date: Nov 2001
Location: England
Posts: 489
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Fantastic, absolutely bloody fantastic.
Reply With Quote
  #8  
Old 09-08-2002, 06:18 PM
Bison's Avatar
Bison Bison is offline
 
Join Date: Jun 2002
Location: Virginia Beach, Virginia
Posts: 522
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I just installed this hack and now my index.php page won't load!
Reply With Quote
  #9  
Old 09-08-2002, 06:41 PM
Chris M's Avatar
Chris M Chris M is offline
 
Join Date: Dec 2001
Location: Northampton, England
Posts: 6,186
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Did you make sure you did the modifications to :

admin/functions.php

Satan
Reply With Quote
  #10  
Old 09-08-2002, 07:39 PM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by Rolodex
I just installed this hack and now my index.php page won't load!
1- Make sure you applied the hack correctly.
2- Make sure you understand how to apply a conditional to your templates before taking actions. If you inserted a wrong conditional simply delete it from your template and you'll be just fine again. I strongly suggest you to work on how-to post and understand the conditional syntax before playing with your templates.

Hack code is tested and working ok. But this is a powerful so a little bit tricky hack especially in usage (in fact this makes it powerful) so please take your time first to understand the basic concepts so that you wouldnt have any problems..
Reply With Quote
  #11  
Old 09-08-2002, 07:51 PM
Dean C's Avatar
Dean C Dean C is offline
 
Join Date: Jan 2002
Location: England
Posts: 9,071
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

this is just too good to be true

awesome hack mate

- Mist
Reply With Quote
  #12  
Old 09-09-2002, 01:57 AM
Neo's Avatar
Neo Neo is offline
 
Join Date: Oct 2001
Location: Anywhere
Posts: 1,817
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

In one sentence what does this do?
Reply With Quote
  #13  
Old 09-09-2002, 02:25 AM
Austin Dea's Avatar
Austin Dea Austin Dea is offline
 
Join Date: Dec 2001
Location: Denver, CO, USA
Posts: 342
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Look at the thread title if you really want it in one sentence -_-...

I have to say I am AMAZED by your hacks Logician. They have so much functionality and are so much more advanced than most other hacks. Great job, keep up the good work .
Reply With Quote
  #14  
Old 09-09-2002, 05:17 AM
SemperFidelis SemperFidelis is offline
 
Join Date: May 2002
Posts: 188
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Another brilliant hack by Logician
Well done and thankyou
Reply With Quote
  #15  
Old 09-09-2002, 05:54 AM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by Neo
In one sentence what does this do?
You can program your vb templates to display different HTML codes to your visitors under different conditions. So they are not static anymore..

Since you are a hacker this information can clarify things better for you:
After you installed the hack you dont need to hack vb. code for this:
PHP Code:
if ( any condition goes here)
{
eval(
"dooutput(\"".gettemplate("ANY TEMPLATE GOES HERE")."\");");
}
else 
{
eval(
"dooutput(\"".gettemplate("ANY TEMPLATE GOES HERE")."\");");

You can now do the same thing by editing the relevant template and insert:
PHP Code:
[[(your condition goes here)]]
HTML codes displayed if your condition applies
[[/(your condition goes here)]]
Other HTML codes displayed regardless of your condition 
Hope this helps a bit..
Reply With Quote
  #16  
Old 09-09-2002, 08:23 PM
Marshalus's Avatar
Marshalus Marshalus is offline
 
Join Date: Nov 2001
Location: Lawrence, KS
Posts: 135
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Simply amazing. A definate nomination for vB hack of the month, hell, hack of the year. This will revolutionize the way people hack their boards, I know I have a lot of uses for this hack just by reading through the description.

/me installs.
Reply With Quote
  #17  
Old 09-09-2002, 11:10 PM
NuclioN's Avatar
NuclioN NuclioN is offline
 
Join Date: Aug 2002
Posts: 955
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Absolutly a genious mod! Clicks install in a string
I guess this opens the way for creative codehackers to create new, funny and smart hacks for the VB forum.
Reply With Quote
  #18  
Old 09-09-2002, 11:50 PM
fastforward fastforward is offline
 
Join Date: Oct 2001
Location: NC, USA
Posts: 399
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by Logician
Vbulletin v.3 has been announced to have "conditional" concept in templates, however my hack wasn't inspired by it at all, because I'm using the conditionals in my Webtemplates hack since March 2002 so in fact vb developers might be inspired by me.
Great hack Logician, but Ed was inspired way before March 2002 :
https://vborg.vbsupport.ru/showthrea...t=conditionals

Like I said though, great hack and thanks... I'll be using it.
Reply With Quote
  #19  
Old 09-10-2002, 07:05 AM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by fastforward

Great hack Logician, but Ed was inspired way before March 2002 :
https://vborg.vbsupport.ru/showthrea...t=conditionals

Like I said though, great hack and thanks... I'll be using it.
thx for pointing this out, I didnt know that thread (in fact I didnt even have vb then)..

So they might not be inspired by me, but at least I'm not inspired by them either.. :knockedout:
Reply With Quote
  #20  
Old 09-10-2002, 07:27 AM
Abbas Abbas is offline
 
Join Date: Nov 2001
Posts: 57
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Great hack!

Using conditionals will it be possible to have separate templates for categories of forums? Or will you have to have a conditional for each forum in that category. I'm basically going to aim to have separate sections of my forum with different graphical styles etc.

Thanks
-Abbas
Reply With Quote
  #21  
Old 09-10-2002, 08:19 AM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by Abbas
Using conditionals will it be possible to have separate templates for categories of forums? Or will you have to have a conditional for each forum in that category. I'm basically going to aim to have separate sections of my forum with different graphical styles etc.
I cant say anything before knowing what exactly you have in your mind but in the first look yes it seems you can do it via conditionals. The hack does not allow you to create multiple templates for one, but by using a conditional trick you can create multi-templates inside one template:

Example:
PHP Code:
[[(($bbuserinfo[userid]==1))]]
Your HTML codes if user's userid is 1
[[/(($bbuserinfo[userid]==1))]]
[[(!($bbuserinfo[userid]==1))]]
Your HTML codes if user'
s userid is NOT 1
[[/(!($bbuserinfo[userid]==1))]] 
So as you see we have one template but within it we actually have two, each of which will be displayed according to user's userid. (Notice ! sign which is used like "else")

However I might say that if you are trying to apply different styles for different forums you dont need a hack, you can do it by configuring your forum styles.. I believe you already know that?
Reply With Quote
  #22  
Old 09-10-2002, 08:29 AM
Abbas Abbas is offline
 
Join Date: Nov 2001
Posts: 57
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for that info. Yeah I know different styles can be done without hacks, but there may be different templates involved not just graphical styles alone, e.g. our gaming forums may have other templates for clan and multiplayer stuff etc...

-Abbas
Reply With Quote
  #23  
Old 09-10-2002, 06:41 PM
AndrewD AndrewD is offline
 
Join Date: Jul 2002
Location: Scotland
Posts: 3,486
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Does this work ok with 2.2.6? I installed it as per instruction but conditional tests simply get reflected back unchanged.

I tried the advanced_functions code as a stand alone and it seems fine. Perhaps I've made a silly mistake somewhere
Reply With Quote
  #24  
Old 09-10-2002, 08:07 PM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by AndrewD
Does this work ok with 2.2.6? I installed it as per instruction but conditional tests simply get reflected back unchanged.

I tried the advanced_functions code as a stand alone and it seems fine. Perhaps I've made a silly mistake somewhere
yes it works with all vb versions I know.. Have you uploaded the file to your server?

More likely your condition didnt apply so it wasnt parsed. What condition did you test and where?
Reply With Quote
  #25  
Old 09-10-2002, 08:10 PM
Martin CX Martin CX is offline
 
Join Date: Nov 2001
Posts: 99
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Wow! I can't wait to try this out!

/me clicks install button
Reply With Quote
  #26  
Old 09-11-2002, 05:58 AM
AndrewD AndrewD is offline
 
Join Date: Jul 2002
Location: Scotland
Posts: 3,486
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Sorted out my problem re conditionals not getting parsed.

gettemplate actually contains two return statements - the first executed only if you have enabled template debugging. I had this option enabled, so the call to advanced_templates was not being made.

you need to make the following change to gettemplate

PHP Code:
 if ($gethtmlcomments and $addtemplatename) {
return 
advanced_templates(
"<!-- BEGIN TEMPLATE: $templatename -->\n$template\n<!-- END TEMPLATE: $templatename -->"
);   }   
return 
advanced_templates($template); 
Great job, thanks
Reply With Quote
  #27  
Old 09-12-2002, 11:28 PM
memobug memobug is offline
 
Join Date: Jun 2002
Posts: 418
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This looks great! I have two questions with how it might work:

1) Is the html between the conditionals parsed, that is if I use a variable name in the html there will it be replaced with its value or will it stay as-is?

2) Can I put a "virtual include" in there in the html conditional? I've done this before using php-include template, but I'm wondering if I can get around that.

Many thanks,

Matt
Reply With Quote
  #28  
Old 09-13-2002, 08:11 AM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Matt,
Quote:
Originally posted by memobug
1) Is the html between the conditionals parsed, that is if I use a variable name in the html there will it be replaced with its value or will it stay as-is?

2) Can I put a "virtual include" in there in the html conditional? I've done this before using php-include template, but I'm wondering if I can get around that.
The parsing of templates does not change after you installed the hack. So you can answer all your questions according to this fact: Your advanced template would exactly do the same parsing if it was a normal vb template.

The hack only checks the template if there is special conditional tags inside and acts like this:
a) if the template does not include any conditional, it takes no action and returns the entire template just like a normal vb. template.
b) If the template has conditionals, the hack checks them one by one and
ba) if condition is FALSE, it deletes this condition (and its HTML code in between) from the template, as if it never existed in the template
bb) If condition is TRUE, it deletes only the condition tags and keeps the condition's HTML code in between so that it will be parsed.

As you see it does not interfere with vb's default template processing in anyway..

Hope this helps..
Reply With Quote
  #29  
Old 09-16-2002, 08:27 AM
Koss Koss is offline
 
Join Date: Jan 2002
Posts: 54
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

hi

will this edit all my style templates if I just edit the template of one style?

thanks
Reply With Quote
  #30  
Old 09-16-2002, 11:09 AM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by Koss

will this edit all my style templates if I just edit the template of one style?
I am not sure if I got the question correctly? After you installed the hack nothing changes in your board unless you apply a conditional to any template in any style set. After the installation, your templates will behave just exactly how they behave before and you'll NOT notice any difference in their display or something. However from now on you will be able to apply a conditional to any template in your database. Ie. your default templates in any style sheet, your custom templates, the templates the hacks you installed created, just anything. Whenever you add a conditional to any template, this template will be displayed according to this conditional. This is how this hacks works and I hope it answers your question too..
Reply With Quote
  #31  
Old 09-17-2002, 05:35 PM
AndrewD AndrewD is offline
 
Join Date: Jul 2002
Location: Scotland
Posts: 3,486
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Sorry to tell you this...

There is an obscure bug when this hack is installed, a user forgets his password and he requests a new one. One ends up with a PHP parse error.

The bug is as follows:

VBulletin uses $a as a global variable in the reset password code (around line 174 of member.php). This messes up use of $a as the command argument in advanced_templates.

Solution: use a variable in advanced_templates which does not have global scope. (e.g. replace $a by $basictemplate)
Reply With Quote
  #32  
Old 09-17-2002, 06:13 PM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by AndrewD
There is an obscure bug when this hack is installed, a user forgets his password and he requests a new one. One ends up with a PHP parse error.
Andrew, I have already noticed that bug, released an update and sent it to hack users via email (for ones who clicked "install" in the hack thread) in September 9th. I put the bug notice and fix into thread's first message and the hack instruction has also been corrected..

Since you wisely noticed the bug and its cause, I'm sure you already fixed it in your board but if you didnt, you can get the updated file and correct the problem..

Thx for the feedback though..
Reply With Quote
  #33  
Old 09-17-2002, 06:18 PM
AndrewD AndrewD is offline
 
Join Date: Jul 2002
Location: Scotland
Posts: 3,486
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You're too quick for me, Logician - or rather I'm too slow and bleary eyed by this time of day

Have now clicked on install, so that you can duly tell me the next wonderful things you achieve
Reply With Quote
  #34  
Old 09-21-2002, 03:30 PM
trainer trainer is offline
 
Join Date: Nov 2001
Posts: 160
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i am seeing

[[(6==6)]]

Advanced Templates Hack has been successfully installed! By the way this remark is visible to Site Admins only.. Enjoy..
Logician \\=^))

[[/(6==6)]]


in the index.php page. how do i get rid of the [[(6==6)]] and [[/(6==6)]]

so i will only see the message?

just checked and seeing

[[(2==6)]]

Advanced Templates Hack has been successfully installed! By the way this remark is visible to Site Admins only.. Enjoy..
Logician \\=^))

[[/(2==6)]]


in the index.php page. how do i get rid of the [[(6==6)]] and [[/(6==6)]]


anyone else having this problem?
Reply With Quote
  #35  
Old 09-21-2002, 03:43 PM
Freddie Bingham's Avatar
Freddie Bingham Freddie Bingham is offline
 
Join Date: Oct 2001
Posts: 506
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by fastforward

Great hack Logician, but Ed was inspired way before March 2002 :
https://vborg.vbsupport.ru/showthrea...t=conditionals

Like I said though, great hack and thanks... I'll be using it.
Yes conditionals were one of the first things to go into vb3 and that was before March 2002.

As for technical details:

1. You can do if/else constructs
2. The conditionals are parsed at the time you edit your templates since we now store two copies of every template. One with the conditionals asis, and one with any conditionals converted to accompanying php code so that there is no overhead when the templates are called by the forum.
Reply With Quote
  #36  
Old 09-21-2002, 08:49 PM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by trainer
how do i get rid of the [[(6==6)]] and [[/(6==6)]] so i will only see the message?
Trainer please login to your Admin CP, choose vb settings and disable "Add template name in comments".. This should fix your problem.. If this fixes the problem and you are determined to keep this option enabled, AndrewD posted the code to apply in this thread a few post above, please apply this one.. But IMO there is no need have this settings on all the time..
Reply With Quote
  #37  
Old 09-21-2002, 09:02 PM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by freddie
Yes conditionals were one of the first things to go into vb3 and that was before March 2002.
Great.. Although this is usually for power users, I believe conditionals add a lot of functionality to the board, so it's a very valuable addition to the script.. I'm using the concept since my webtemplates hack and didnt know you intented to add it to vb 3 and I'm very glad you did..

Quote:
2. The conditionals are parsed at the time you edit your templates since we now store two copies of every template. One with the conditionals asis, and one with any conditionals converted to accompanying php code so that there is no overhead when the templates are called by the forum.
I dont exactly understand what kind of algorithm you are following but if I'm not wrong, it will be much different than my approach. I parse them on the fly and I accept that this can add a small (IMO bearable) overhead to running time, but I believe it's the only way to code it, if functionality is the primary concern. This helps to have more than 1 conditionals in every template and also allow any variable to be used as a conditional.

Of course I'm sure you have a nice algorithm either..
Reply With Quote
  #38  
Old 09-22-2002, 10:16 AM
Xenon's Avatar
Xenon Xenon is offline
 
Join Date: Oct 2001
Location: Bavaria
Posts: 12,878
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

perhaps you've read that already, but if not:
http://www.vbulletin.com/forum/showt...3&pagenumber=2
Reply With Quote
  #39  
Old 09-22-2002, 03:01 PM
Logician's Avatar
Logician Logician is offline
 
Join Date: Nov 2001
Location: inside vb code
Posts: 4,449
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by Xenon
perhaps you've read that already, but if not:
http://www.vbulletin.com/forum/showt...3&pagenumber=2
thx for the link Pal, but that explanation is still unclear to me.. The only educated guess I can make from that statement is that vb3 will save the conditionals seperate from the template itself so that they could be eval'ed without need to parse through the template but it's still not clear to me how this would increase the template parsing time.. If a condition is met, there will be still a replacement (= parsing) in template. The only gain would be while searching through the template if it has a conditional or not but well considering the templates sizes are not so big, IMO its overhead increase should be very trivial..

It's just a "substr_count" that's saved (which I intend to add to my hack too) but IMO it does not effect running time so significiantly..

Or I still didnt get how it will work? lol
Reply With Quote
  #40  
Old 09-22-2002, 10:51 PM
trainer trainer is offline
 
Join Date: Nov 2001
Posts: 160
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

what is this like on server load? it seems to be pretty hard on my site. any ideas?
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 03:05 PM.


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.11326 seconds
  • Memory Usage 2,670KB
  • Queries Executed 53 (?)
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
  • (6)bbcode_php
  • (14)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (40)post_thanks_box
  • (40)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (40)post_thanks_postbit_info
  • (39)postbit
  • (40)postbit_onlinestatus
  • (40)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
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete