Configuration Options

Configuration Options – Setting the defaults for HTML_Template_Flexy

Configuration

HTML_Template_Flexy can either be configured globally or on each instance, using an associated array. The easiest way to configure HTML_Template_Flexy is to use ini files (although you may also like to consider the PEAR::Config class, or your own configuration system)

This is a typical configuration file for HTML_Template_Flexy

[HTML_Template_Flexy]

templateDir = /home/me/Projects/myapplication/templates
compileDir =  /home/me/Projects/myapplication/compiled_templates
forceCompile = 0
debug = 0
locale = en
compiler = Standard

To use this ini file with HTML_Template_Flexy, (and Possibly any other classes that use options like this)

Setting the default options

<?php
$config 
parse_ini_file('example.ini',TRUE);
foreach(
$config as $class=>$values) {
  
$options = &PEAR::getStaticProperty($class,'options');
  
$options $values;
}
?>

Alternatively you can set (or override) the configuration when you instantate the class

Setting the default options

<?php
  $options 
= array(
      
'templateDir'   => '/home/me/Projects/myapplication/templates',
      
'compileDir'    => '/home/me/Projects/myapplication/compiled_templates',
      
'forceCompile'  => 0,
      
'debug'         => 0,
      
'locale'        => 'en',
      
'compiler'      => 'Standard',
  );
  
$template = new HTML_Template_Flexy($options);
?>

Configuration Options

templateDir directory

This is the directory where all your templates are located

compileDir directory

The directory where the compiled templates will be stored, This directory should be writable by the web server

forceCompile boolean

Normally 0, means that the template will only be compiled once (or if the template file is altered), this is only really usefull if you are developing filters and need to test the result.

debug integer

The default debugging level (default 0=off), 1= shows some debugging information

locale string

Default is 'en' - english. The language use for reading/writing templates. Currently it is only used in the compiled files filename = eg. originalname.html.en.php

Flexy uses get_text() internally if it is installed, and will replace all strings in a HTML page with the return value of get_text(). - This enables the creation of multilanguage sites with a little less pain.

A file {templatename}.strings.serial is created for each file that is parsed, you can use this with PHP's unserialize function to retrieve an array of all the strings in a file. (for translating), or just use the tool xgettext.

compiler string

Default is 'Flexy' - The Flexy Tokenizer Driver engine. Other engines available are regex (similar to Xipe's engine), Raw (For plain PHP files with no replacement or compiling) and Standard (depreciated). You can use this field to load your own engines, either based Off the core code, or totally separate..

multiSource boolean

Default is false - Allow the same template to exist in multiple places (eg. if you have theme's and want to fall back to a default template if the themed version doesnt exist.)

templateDirOrder string

Default is '' - by default, the first matched template is used, if you have multiple paths, and want the last in the list to be used, then set this to 'reverse'

filters array|string

an array or comma separated string of filters ONLY USED BY THE Regex backend, available filters are: BodyOnly (strip everything before and after body tag), Mail (add an extra line break after php tags.), Php (removes php code, not very reliably), SimpleTags (variable, method etc. replacement), XML (replace XML opening tag with echos.)

nonHTML boolean

default is false - if you use the Flexy compiler, it turns off parsing of HTML, (not heavily tested)

allowPHP boolean|string

default is false - allows php code in templates, normally off to help you reduce the chance of you shooting your self in the foot by forgetting to escape output.. (can be usefull for complex looping), but not normally recommended. setting to true, enables PHP code, setting to 'delete' removes php code. (although it doesnt prevent XSS attacks, so it is only suited to trusted users)

flexyIgnore boolean

default is false - setting to true, will turn off the conversion of html form elements into HTML_Template_Flexy_Element's

numberFormat string

default is ",2,'.',','" - this is the piece of code that is appended to the output engine when using the :n modifier, eg. {xxxx:n} is replaced with number_format($t->xxxx,2,'.',','); see the php manual page for number_format the default output would be: 1,200.00

url_rewrite string

when compiling the template flexy can rewrite <img src, <script src, <a href and xul stylesheet urls. The format is "match/original:new/url, match/another/original:new/url" each combo is separated by a comma, and the colon separates the pair. This helps previewing templates without using the engine.

compileToString boolean

default false - if set to true, the compile will return a string of the compiled template, rather than writing it to the cache file. eg. {object._myvar}

privates boolean

default false - if set to true, you can access variables prefixed with an underscore (normally private in PEAR's coding standards) eg. {someobject._myprivatevar} and {_myprivate}

globals boolean

default false - if set to true, you can access php's globals and superglobals, eg. {_POST[myvar]}, {GLOBALS[somevalue]}

globalfunctions boolean

default false - if set to true, you can access any native php function using the GLOBALS. prefix eg. {GLOBALS.date(#d/m/Y#)} obviously you should trust your template authors, as they can easily run exec() if this is enabled.

locale string

default 'en' - either used to search for language specific templates with {filename}.{locale}.{extension} or in conjunction with the Translation2 language translation toolkit, to set the language used to translate templates to at compile time.

Translation2 mixed

default false - you can set this to an array or an existing Translation2 object eg. Translation2 => array('driver'=>'dataobjectsimple', options=>array()));

strict boolean

default false - By default warnings about undefined variabes are hidden, this turns on all PHP warnings during the outputObject calls. Can be usefull for finding bugs hidden by method callbacks.

fatalError int

default constant HTML_TEMPLATE_FLEXY_ERROR_DIE - this determines the behaviour when compiling a template fails, normally flexy will die and report the error to the screen, you can change this to HTML_TEMPLATE_FLEXY_ERROR_RETURN, if you want to recieve a PEAR_Error object from compile().

plugins string|array

loads plugin classes, (by default from the Plugin folder), these can be used either via {plugin.nameofmethod} or as a modifier {outputstring:dateformat}, default formats are normally collected via configuration options plugin.dateformat, plugin.numberformat.decimals, plugin.numberformat.point, plugin.numberformat.thousands