Understanding Template Settings - TNG V9
To understand how the Template Settings work in TNG V9, in order to create new templates or modify existing ones, you need to understand:
- how the template folders should be named
- how the variables should be named
- how multiple languages are supported
Template Name Rules
The following is from an email posted by Linc Haymaker on the TNG V9 testers list.
The template naming rules for TNG V9 are as follows:
- Do not use any template folders named XXX where XXX are numeric - Chars 0-9
- So do not use template folders named 1, 11, 101 9.1 ...
- Do not use template folders named like: 0xff, 0x00 and the like - Hexadecimal notation (0xFF)
- Do not use template folders named like: 3e5, 2e2 and the like. - Scientific notation
If the user does not follow these rules they run the risk of:
- Ending up with a template selection that will not function as desired.
- Folder name vs prefix convention differences.
- Two template selections within the the pulldown that look the same, but are not the same folder name.
- Template folders named "template10" and "10" show the same in the pulldown.
If the above rules are followed then the prefix convention (short hand name) to be used within templateconfig.php and the template(s) index.php and topmenu.php (if used) is:
- If template name is templateXXX where the name starts with "template" then the prefix naming convention for the template is: "tXXX"
- If the template does not have templateXXX then the prefix naming convention is: "Ythe_folder_name_" where Y is "t"
Template folder name | Display in pulldown | prefix / Short hand name | allowed / not allowed |
---|---|---|---|
template4 | Template 4 | t4 | allowed |
template10 | Template 10 | t10 | allowed |
10 | Template 10 | not allowed | |
template0x00 | Template 0x00 | t0x00 | allowed |
template3e5 | Template 3e5 | t3e5 | allowed |
3e5 | Template 3e5 | not allowed | |
template3t5 | template3t5 | ttemplate3t5 | allowed |
template10x | template10x | ttemplate10x | allowed |
abcde | abcde | tabcde | allowed |
template500 | Template 500 | t500 | allowed |
500 | Template 500 | not allowed | |
template500x | template500x | ttemplate500x | allowed |
500x | 500x | t500x | allowed |
templateblue | templateblue | ttemplateblue | allowed |
Note that if you use names instead of numbers for your template name, such as templateblue for example, you have to code the variables in the templateconfig.php as ttemplateblue_
Adding New Variables
When you add new variables to an existing TNG template, or create a new template, you may need to make changes in multiple places:
- templateconfig.php
- cust_text.php
- admin_templateconfig.php
- textarea array
- translation array
templateconfig.php
You can add new variables directly in the templateconfig.php file and they will automatically be displayed in the Admin >> Setup >> Template Settings relative to where you added them in the file. For example, you could add the following variables to Template 4 to show a Feature 5
$tmp['t4_featuretitle5'] = "Feature Story 5";
$tmp['t4_featurelink5'] = "histories/feature5.php";
$tmp['t4_featurethumb5'] = "img/featurethumb4.gif";
$tmp['t4_featurepara5'] = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh.";
However, just adding the above variables to the templateconfig.php file is not sufficient, since these will display in the Template Settings for Template 4 without any text labels.
cust_text.php
So in addition to adding the template variables you need to create $text labels for these variables in your cust_text.php file for each language you support on your site.
$admtext['featurethumb5'] = "Feature 5 thumbnail";
$admtext['featurelink5'] = "Feature 5 link";
$admtext['featuretitle5'] = "Feature 5 title";
$admtext['featurepara5'] = "Feature 5 paragraph";
admin_templateconfig.php
translation array
Note that if you add new variables and also want these variables to support multilingual environments, you must also add the new variables to the $needtrans array in admin_templateconfig.php. So for the above on a multilingual site you will need to modify line 165 of admin_templateconfig.php to add featuretitle5 and featurepara5 to the array
$needtrans = array('headline','maintitle','welcome','hisside','herside','headtitle1','headtitle2','headtitle3','momside','dadside','mainpara',
'featurepara','searchpara','fhpara','mwpara','respara','headtitle','headsubtitle','latestnews','featuretitle1','featuretitle2','featuretitle3',
'featuretitle4','featuretitle5','featurepara1','featurepara2','featurepara3','featurepara4','featurepara5','photocaption','newstext');
textarea array
In order to get the Feature 5 paragraph to be a <textarea> instead of a single input field, you must also add the featurepara5 to the $textareas array.
$textareas = array('mainpara','searchpara','fhpara','fhlinkshis','fhlinkshers','mwpara','featurepara','respara','featurelinks','reslinks','headtitle','headsubtitle','latestnews','featurepara1','featurepara2','featurepara3','featurepara4','featurepara5','photocaption','newstext');
Multi-language example
TNG version: | ≥ 9.0 |
In order to add a multi-language variable to a TNG V9 Template, you need to do the following:
- modify the $needtrans array in admin_templateconfig.php to add the tag name without the template identifier to the $needtrans array
- create a $admtext variable in your language cust_text.php for the same label tag added to the $needtrans array
- add the new template variable to the templateconfig.php file
- modify the index.php and topmenu.php files to use the new template variable
For example, if you wanted to change the Search and Title image files in Template 4 to use a different graphic image for each language you would need to
- add titleimg and searchimg to the $needtrans array as shown below to line 165 of admin_templateconfig.php
$needtrans = array('headline','maintitle','welcome','hisside','herside','headtitle1','headtitle2','headtitle3','momside','dadside','mainpara','featurepara', 'searchpara','fhpara','mwpara','respara','headtitle','headsubtitle','latestnews','featuretitle1','featuretitle2','featuretitle3','featuretitle4', 'featurepara1','featurepara2','featurepara3','featurepara4','photocaption','newstext','titleimg','searchimg');
- add $admtext['searchimg'] to your cust_text.php for each language you use. The $admtext['titleimg'] is already provided by TNG
- add $tmp['t4_searchimg'] to your templateconfig.php file
$tmp['t4_searchimg'] = "img/search4.gif";
- when you update your Template Settings for Template 4 and choose the Create copy in: pull down for the language selection, TNG will add
$tmp['t4_searchimg_English-UTF8'] = "img/search4-en.gif"; $tmp['t4_searchimg_French-UTF8'] = "img/search4-fr.gif";
- you then need to modify the Template 4 index.php file to use the new language switching capability for the graphic title and search image
- line 14 of the index.php which displays the search4.gif file must be changed to use the new t4_searchimg variable as follows
<a href="searchform.php"><img src="<?php echo $cms['tngpath'] . $templatepath; ?><?php echo getTemplateMessage('t4_searchimg'); ?>" alt="<?php echo $text['mnusearchfornames']; ?>" class="searchimg" /></a>
- line 91 of the index.php which displays the search4.gif file must be changed to use the new t4_searchimg variable as follows
<img src="<?php echo $cms['tngpath'] . $templatepath; ?><?php echo $tmp['t4_titleimg']; ?>" alt="" class="banner" width="468" height="100" />
- line 14 of the index.php which displays the search4.gif file must be changed to use the new t4_searchimg variable as follows
- you then need to modify the Template 4 topmenu.php file to use the new language switching capability for the graphic title and search image
- line 11 of the topmenu.php which displays the search4.gif file must be changed to use the new t4_searchimg variable as follows
<a href="searchform.php"><img src="<?php echo $cms['tngpath'] . $templatepath; ?><?php echo getTemplateMessage('t4_searchimg'); ?>" alt="<?php echo $text['mnusearchfornames']; ?>" class="searchimg" /></a>
- line 80 of the topmenu.php which displays the search4.gif file must be changed to use the new t4_searchimg variable as follows
<img src="<?php echo $cms['tngpath'] . $templatepath; ?><?php echo $tmp['t4_titleimg']; ?>" alt="" class="banner" width="468" height="100" />
- line 11 of the topmenu.php which displays the search4.gif file must be changed to use the new t4_searchimg variable as follows
Note that if you want to use URL links in a Template Settings variable, then it must be defined in the $textarea
Displaying New Variables
echo statement
If you add new variables to the templateconfig.php, then you also need to add the echo for the variable in the index.php or topmenu.php file as appropriate. For example, if you could add the variables to Template 4 to show a Feature 5, then you need to modify the Template 4 index.php file to show the new added variables
<p>
<a href="<?php echo $tmp['t4_featurelink5']; ?>"><img src="<?php echo $cms['tngpath'] . $templatepath; ?><?php echo $tmp['t4_featurethumb5']; ?>" alt="feature 5" class="featureimg" /></a>
<a href="<?php echo $tmp['t4_featurelink5']; ?>"><span class="emphasis"><?php echo getTemplateMessage('t4_featuretitle5'); ?></span></a> <?php echo getTemplateMessage('t4_featurepara5'); ?>
</p>
getTemplateMessage
Note that if the variable is used to support multiple languages and is in the $needtrans array, then you must used the getTemplateMessage function to display the language specific variable content. In other words, any variable that you add to the $needtrans array should be displayed using a getTemplateMessage function call.
<?php echo getTemplateMessage('t4_featurepara4'); ?>
Note that in the echo getTemplateMessage('tN_variable'), the language specific extension for the variable is not specified, the getTemplateMessage function determines what language is in use and set the variable appropriately.
getTemplateMessage function
TNG V9 added the getTemplateMessage function to display the text variables in the index.php page in order to support Home pages for multiple languages.
function getTemplateMessage($key) {
global $tmp, $session_language;
$langkey = $key . "_" . $session_language;
return isset($tmp[$langkey]) ? $tmp[$langkey] : $tmp[$key];
}
Preserving your changes
The best way to preserve your changes and potentially avoid major problems on TNG upgrades, is to code your changes as a .cfg file for the Mod Manager to install your changes.
If you prefer making your changes manually, then it is recommended that you keep good notes.
Related Links
Creating a new Template - TNG V9