Below, we will document some little template tricks. Typically show content depending on something. Can be done directly in templates/*.tpl files or in Admin > Look & Feel.
Starting in Tiki5, in Admin > Look & Feel (tiki-admin.php?page=look) > Miscellaneous, there is a Custom Code section to add custom CSS and JavaScript.
You can create styles/custom.js or styles/yourtheme/custom.js and that should get included automatically. You may need to empty your Tiki cache.
#sitesubtitle { font-size: 24px; }
Apparently, a problem with my custom theme is preventing me from accessing my site normally.
Reset the theme "manually": If you can't access the admin pages to set your site's theme back to one that is known to work, you can reset the theme from the back end, so to speak.
Database method: Use phpmyadmin on your server to access your Tiki database. In the table "tiki_preferences", find the row for "site_style". Edit this row by replacing the custom theme name with a standard theme, such as thenews.css.
FTP method (easier): Using your FTP client, go to the styles directory of your Tiki installation and rename the theme currently set as the site theme, such as by changing its ".css" file extension to ".txt". Tiki will revert to the default. Log in using the default theme and fix what is wrong. Also clear the site caches.
When trying out a new theme, it is much better to use the "switch theme" module to select it. Don't make a new and untried theme the site theme without first trying it out from the switch-theme module.
To change themes, you can point your browser to a non faulty theme:
For some unknown reason the theme doesnt change. Look directly in the database in 'tiki_preferences'
look at:
UPDATE `tiki_preferences` SET `value` = 'fivealive.css' WHERE `tiki_preferences`.`name` = 'style';
{if $page neq ''} <a title="{tr}Print{/tr}" href="tiki-print.php?page={$page|escape:"url"}"> <img src="pics/icons/printer.png"/>{tr}Print{/tr} </a> {/if}
{if $SCRIPT_NAME eq '/tiki-print.php'} <img src="http://themes.tiki.org/show_image.php?id=53" alt="Site Logo" style="border: none"> {/if}
...page...
{if $user} Hello {$user} {/if}
{if $group eq "Admins"} You are a member of the group {$group} {/if}
{if $tiki_p_admin eq 'y'} You have full admin rights {/if}
{if $prefs.feature_wiki eq "y"} The Wiki feature is on {/if}
{if $prefs.language eq "fr"} <a href="accueil"> {elseif $prefs.language eq "es"} <a href="inicio"> {else} <a href="tiki-index.php"> {/if}{tr}Home{/tr}</a>
This is an Smarty block to display only if language matches.
It's one quick hack like PluginLang, but to use in modules and templates.
Example:
{translation lang="en"}Hello{/translation}
{translation lang="pt-br"}Olá{/translation}
If the current language is en, Hello will be displayed. If it is pt-br, Olá.
To make users switch language, you can add Module switch_lang or hard code some links such as:
{if $prefs.language eq "fr"} <a href="tiki-switch_lang.php?language=fr">-English-</a> -Français- <a href="tiki-switch_lang.php?language=es">-Español-</a> {elseif $prefs.language eq "es"} <a href="tiki-switch_lang.php?language=en">-English-</a> <a href="tiki-switch_lang.php?language=fr">-Français-</a> -Español- {else} -English- <a href="tiki-switch_lang.php?language=fr">-Français-</a> <a href="tiki-switch_lang.php?language=es">-Español-</a> {/if}
Admin > Look & Feel > Add HTML comment at start and end of each Smarty template (TPL). Then, clear your template cache (tiki-admin_system.php?do=templates_c)
The system name for this feature is "log_tpl". Then, when you "view source" with your browser, you will see which template was used to create it.
Make sure to turn off once you go into production, or else your email notifications will also have a note!
Look in: templates/mail/
So if you want to modify tiki-searchresults.php, you find templates/tiki-searchresults.tpl
templates/tiki.tpl is the master container.
Say you want to affect the master container based on the current page, you can do
{if $mid eq "tiki-searchresults.tpl"} bla bla {/if}
add the following code in Site Ads and Banners Content:in Site Ads and Banners section in Administration menu. http://www.yoursite.com/tiki-admin.php?page=ads
this exemple shown a banner set in zone 'ZoneName' if the blogid #2 is active.
{if $blogId eq '2'} {banner zone=ZoneName} {/if}
You could use the Group Theme feature but it seems broken currently in Tiki 5 so here's a workaround using Javascript code in Admin > Look & Feel > General Layout > Custom HTML <head> Content ("Registered users can switch themes" - preference name change_theme - must be enabled):
{if !$user and $prefs.style ne "jqui.css"}<script type="text/javascript"> <!-- window.location = "tiki-switch_theme.php?theme=jqui.css" //--> </script>{/if}
{wiki}{literal} ::My __wiki__ code:: {/literal}{/wiki}
This works until Tiki6, because starting in Tiki7, all the zones are now drag & drop modules
See Piwik example.
You can add PHP to Smarty using the php smarty tag, but for this to work, you need to deactivate the Smarty Security (which is on by default). A safer and better way is to Create your own Smarty plugin.
See Custom Code HowTo - Post-It Notes
tiki-admin.php?page=look -> General Layout options -> Secondary site menu custom code
{menu id=47 css=y type=horiz}
This is easier now, and you can use Module menu, which you can drag & drop (and double click to edit parameters) at tiki-admin_modules.php
You need to set the params to the module such as nobox=y, etc...
point your browser like this example: tiki-index_p.php?page=i18n
Or use PluginAppFrame
Put in a template or in Look & Feel custom code to have a popup with information on all the variables, at each page refresh.
{debug}
To avoid driving your users mad 😊
{if $user eq 'admin'} {debug} {/if}
Admin -> Category -> Categories used in templates (TPL)
(categories_used_in_tpl)
How to use? Something like
http://doc.tiki.org/Category+Admin#Using_the_current_object_categories_in_a_tpl
another
To determine if an object is categorized, use:
{if !empty($objectCategoryIds)} NOT categorized {else} AM categorized {/if}
This is a new native feature in Tiki8. Just admin any module and indicate when to hide/show as you would edit any module param...
{if $section eq "blogs"} text shown just when in one of the blog pages {/if}
The current perspective ID is not available to the templates. However, you can simply use the value of something that was overriden in this template. This could be in one of the Site identity fields.
{if $prefs.sitetitle eq "Workspace Sales"} {phplayers id=45 type=horiz css=y} {else} {phplayers id=47 type=horiz css=y} {/if}
How to display URL param in a page or the page name or the user name
http://themes.tiki.org/tiki-index_raw.php?page=Template+Tricks
http://themes.tiki.org/tiki-index_p.php?page=Template+Tricks
works for all features, not just wiki pages
http://themes.tiki.org/tiki-index.php?page=Template+Tricks&fullscreen=y
related:
doc:Fullscreen
dev:Fullscreen
If your site changes hosts, you may have time to plan a nice message on the maintenance page of the old host. The maintenance mode only permits a short sentence, as the maintenance page should work even if the database is unavailable.
This is the part of tiki-error_simple.php you are looking for.
echo '</p> <form name="loginbox" action="tiki-login.php?page=tikiIndex" method="post">
Note that all is into a <pre> tag, so don't forget the line breaks. Also, handle single quotes with care.
echo '</p> The site xxxxxx.xxx is being transferred between servers between 19:30 and ca. 21:00 GMT today, 29 December 2011. Access during this time may be interrupted for short periods. No editing of pages and no posting will be possible during this time. While the new location is being propagated over the Internet (can take hours) you can <a href="http://new-xxxx.xxx">reach the site here.</a> <form name="loginbox" action="tiki-login.php?page=tikiIndex" method="post">
Templates Best Practices
Advanced Wiki Syntax usage examples