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
  #252  
Old 11-19-2003, 06:30 PM
XrayHead's Avatar
XrayHead XrayHead is offline
 
Join Date: Oct 2002
Posts: 138
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

WOW

This is yet another simply stunning hack by yourself.
Your hacks have changed my site way beyond imagination…?

Absolutely brilliant, Installs
Reply With Quote
  #253  
Old 11-28-2003, 08:00 PM
K.Michael K.Michael is offline
 
Join Date: Dec 2001
Posts: 4
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

How to get $forumid in showthread.php ( in header and footer templates)
showtread.php small hack ?
somebody can help me ? :surprised:
Reply With Quote
  #254  
Old 12-07-2003, 11:51 AM
thakikka thakikka is offline
 
Join Date: Dec 2002
Location: Germany
Posts: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Need help too

I want to display a message always and only in the last 7 days of a month (e.g. from 23th to 30th of each month). how can i do that?
Reply With Quote
  #255  
Old 12-09-2003, 03:49 AM
Sadie Frost's Avatar
Sadie Frost Sadie Frost is offline
 
Join Date: Dec 2001
Location: Pittsburgh
Posts: 307
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Has anyone gotten this to work with forumid, because I tried what people were posting but it's not working for me. I'm trying to make it so signatures only show in a certain forum
Reply With Quote
  #256  
Old 12-09-2003, 12:24 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 Sadie Frost
Has anyone gotten this to work with forumid, because I tried what people were posting but it's not working for me. I'm trying to make it so signatures only show in a certain forum
$thread[forumid]==X should work in showthread related templates. (your request is so)

For forumdisplay related templates use $forumid==X
Reply With Quote
  #257  
Old 12-17-2003, 03:27 AM
Sadie Frost's Avatar
Sadie Frost Sadie Frost is offline
 
Join Date: Dec 2001
Location: Pittsburgh
Posts: 307
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Works perfectly - thanks so much!
Reply With Quote
  #258  
Old 12-17-2003, 06:45 AM
Marulatree's Avatar
Marulatree Marulatree is offline
 
Join Date: Nov 2002
Location: London
Posts: 135
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I am finding it hard to understand exactly where to put the conditionals. do I put it in Functions.php if so where. I have made the adjustments as you said to my functions.php.

All I really want to do is;
Change the header template to refect another header template for a specific forumid and for a specific group.

e.g.
Group 5 is a members only usergroup.
Forumid 8 is a members only forum.
When usergroup 5 enters forumid 8 then change the header to "Members only" forum header logo.

What would I have to do. All I need is for someone to give me the code for this as an example so I see how this works...

I am not lazy, and just need a working example so I can put my own conditionals into practice...

Many thanks in advance...
Reply With Quote
  #259  
Old 12-17-2003, 09:10 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 Marulatree
I am finding it hard to understand exactly where to put the conditionals. do I put it in Functions.php if so where.
Provided that you installed the hack, you don't edit any .php files anymore to apply conditionals. These are "template conditionals" so you put them inside templates.

For instance if you want to display different header template according to different conditions, you edit your header template and apply your conditionals here.

a sample template with conditionals:
Quote:
[[($bbuserinfo[usergroupid]==6)]]
show this text to admins
[[/($bbuserinfo[usergroupid]==6)]]
[[($bbuserinfo[usergroupid]==2)]]
show this text to registered users
[[/($bbuserinfo[usergroupid]==2)]]
show this text everybody else who is not registered user nor admin.
Needless to say you'll replace "show this text" texts with HTML code that you want to display
Reply With Quote
  #260  
Old 12-17-2003, 09:25 AM
Marulatree's Avatar
Marulatree Marulatree is offline
 
Join Date: Nov 2002
Location: London
Posts: 135
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Logician
Provided that you installed the hack, you don't edit any .php files anymore to apply conditionals. These are "template conditionals" so you put them inside templates.

For instance if you want to display different header template according to different conditions, you edit your header template and apply your conditionals here.

a sample template with conditionals:

Needless to say you'll replace "show this text" texts with HTML code that you want to display
Hmmm...thanks for the fast reply! I am still a little slow on the take here.

So in my HEADER template, If I would say use; usergroup 6 to get a different HEADER (Banner,logo etc.) to view when they click into the Member Club forum, What code would I use for VB to see that it needs to change the header to an entirely differently designed Header?

Would I need to create an alternative HEADER (say HEADER2) template? What would the exact code be?

Sorry to be a pain!!!
Reply With Quote
  #261  
Old 12-17-2003, 09:59 AM
Marulatree's Avatar
Marulatree Marulatree is offline
 
Join Date: Nov 2002
Location: London
Posts: 135
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Here's my original header:

Code:
<table width="100%" border="0" cellpadding="0" cellspacing="0" dwcopytype="CopyTableRow">
              <tr> 
                <td width="14%"><img src="images/forumlogoxmas.gif" width="229" height="71"></td>
                <td width="86%" background="images/bs2.gif"><div align="center"><a href="http://www.jpg.com/cgi-bin/betaSchool.exe/sendtomain" target="_blank"><img src="http://www.******.com/images/jpg.jpg" border=0></a></div></td>
              </tr>
              <tr>
              </tr>
            </table>
 <!-- toplinks -->
   <table width="100%" border="0" cellpadding="0" cellspacing="0">
<td align="center"><a href="http://www.*******.com/"><img src="{imagesfolder}/top_home.gif" alt="Hompage" border="0"></a>   
<a href="usercp.php?s=$session[sessionhash]"><img src="{imagesfolder}/top_profile.gif" alt="Here you can view your subscribed threads, work with private messages and edit your profile and preferences" border="0"></a>
   <a href="register.php?s=$session[sessionhash]&action=signup"><img src="{imagesfolder}/top_register.gif" alt="Registration is free!" border="0"></a>
   <a href="calendar.php?s=$session[sessionhash]"><img src="{imagesfolder}/top_calendar.gif" alt="Calendar" border="0"></a>
   <a href="http://forum.marulatree.com/proarcade.php?action=arcade&s=$session[sessionhash]"><img src="{imagesfolder}/arcade.gif" alt="Med's Arcade - Can you Beat the high Score?" border="0"></a>
   <a href="memberlist.php?s=$session[sessionhash]"><img src="{imagesfolder}/top_members.gif" alt="Find other members" border="0"></a>
   <a href="misc.php?s=$session[sessionhash]&action=faq"><img src="{imagesfolder}/top_faq.gif" alt="Frequently Asked Questions" border="0"></a>
   <a href="search.php?s=$session[sessionhash]"><img src="{imagesfolder}/top_search.gif" alt="Search" border="0"></a>
   <a href="member.php?s=$session[sessionhash]&action=logout"><img src="{imagesfolder}/top_logout.gif" alt="Logout" border="0"></a>
<a href="http://www.********.com/gallery/"><img src="http://www.******.com/forum/images/gallery.gif" alt="Browse the Gallery" border="0"></a>
<a href="http://www.*******.com/mtchat/"><img src="{imagesfolder}/livechat.gif" alt="Join Live Chat" border="0"></a></td></table>
   <!-- /toplinks -->
The usergroup is (lets say): 3
The Forumid is: 8

If usergroup 3 logs into Forumid 8 change header to:

A newley desiger header with a different logo, banner etc...
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 10:16 AM.


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.05539 seconds
  • Memory Usage 2,336KB
  • Queries Executed 25 (?)
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)bbcode_code
  • (4)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
  • (4)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)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