About Thelia Smarty Templates
Thelia Smarty templates uses the Smarty template engine, enriched by many Thelia additions, such as loops, data access functions, internationalization function, etc.
Be sure to have a basic Smarty knowledge before starting to write a new template. The Smarty documentation will help you.
The default
templates provides guidelines and good practices to build a Thelia template.
Template inheritance is available from Thelia 2.4. You can now create a new template, and redefine only the required files instead of copying the whole template.
Structure of a template
Thelia Smarty templates are located in the templates
sub-directory. This directory contains two sub-directories :
backOffice
: this is where back-office templates are located.frontOffice
: this is where front-office templates are located.pdf
: contains templates of the PDF documents, like invoices.mail
: contains templates of the e-mail sent by Thelia to customers or administrators.
These directories have identical structures; they contains an unlimited number of directories, each of them containing a complete template :
+ templates
|
+ frontOffice
| |
| + default
| + my-first-template
| + my-other-template
| + ...
|
+ backOffice
|
+ default
+ ...
+ pdf
|
+ default
+ ...
+ mail
|
+ default
+ ...
Each of the templates directories contains a set of HTML files, and related resources (CSS, JS, images, layouts, etc.).
Selecting the current template
To select the current template, set the name of the template directory in the following configuration variables :
active-admin-template : the back-office templateactive-front-template : the front-office template
active-mail-template : the mail template
active-pdf-template : the PDF template
Global Variables
This functionality is only available since version 2.3.4
The app variable is available everywhere and gives access to many commonly needed objects and values.
{$app->environment} {* string The current environment string (e.g 'dev') *}
{$app->request} {* Request|null The HTTP request object *}
{$app->session} {* Session|null The session *}
{$app->debug} {* bool The current debug mode *}