This shows you the differences between two versions of the page.
|
en:public:developer:template_system:start [2012/11/20 11:37] admin |
en:public:developer:template_system:start [2012/11/20 11:38] (current) admin |
||
|---|---|---|---|
| Line 84: | Line 84: | ||
| is even more verbose and fragile than PHP code! It is perfect for computers, but horrible for humans. | is even more verbose and fragile than PHP code! It is perfect for computers, but horrible for humans. | ||
| ArKadia is about being easy to read, understand and maintain. | ArKadia is about being easy to read, understand and maintain. | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ===== Templates ===== | ||
| - | |||
| - | Template is simply a text file. It can generate any text-based format (HTML, XML, CSV, etc.). | ||
| - | A template contains variables, which get replaced with values when the template is evaluated, | ||
| - | and tags, which control the logic of the template. Below is a minimal template that illustrates a | ||
| - | few basics. Each element will be explained later in this document.: | ||
| - | |||
| - | <code html> | ||
| - | <#doctype> | ||
| - | <html> | ||
| - | <head> | ||
| - | <#meta_title> | ||
| - | <#meta_description> | ||
| - | </head> | ||
| - | <body> | ||
| - | <#frame name="topframe"> | ||
| - | </body> | ||
| - | </html> | ||
| - | </code> | ||
| - | |||
| - | Why use a text-based template instead of an XML-based one (like Zope's TAL)? We wanted ArKadia's template | ||
| - | language to be usable for more than just XML/HTML templates. We use it for emails, JavaScript and CSV. | ||
| - | You can use the template language for any text-based format. | ||
| - | |||
| - | ===== Variables ===== | ||
| - | |||
| - | Variables look like this: <#variable>. When the template engine encounters a variable, it | ||
| - | evaluates that variable and replaces it with the result. Variable names consist of any | ||
| - | combination of alphanumeric characters and the underscore ("_"). The dot (".") also appears | ||
| - | in variable sections, although that has a special meaning, as indicated below. Importantly, | ||
| - | you cannot have spaces or punctuation characters in variable names. | ||
| - | |||
| - | Use a dot (.) to access attributes of a variable. <#section.title> will be replaced with the | ||
| - | title attribute of the section object. If you use a variable that doesn't exist, the template | ||
| - | system will insert '' (the empty string) by default. | ||
| - | |||
| - | ===== Filters ===== | ||
| - | |||
| - | You can modify variables for display by using filters. Filters look like this: <#name lowercase="1"> | ||
| - | This displays the value of the <#name> variable after being filtered through the lower filter, | ||
| - | which converts text to lowercase. To give you a taste of what's available, here are some of the more | ||
| - | commonly used template filters: | ||
| - | |||
| - | === default === | ||
| - | |||
| - | If a variable is false or empty, use given default. Otherwise, use the value of the variable | ||
| - | For example: | ||
| - | <code html> | ||
| - | <#value default="nothing"> | ||
| - | </code> | ||
| - | |||
| - | === lowercase === | ||
| - | |||
| - | === uppercase === | ||
| - | |||
| - | === xmlencode === | ||
| - | |||
| - | === htmlencode === | ||
| - | |||
| - | === httpencode === | ||
| - | |||
| - | === JavascriptEncode === | ||
| - | |||
| - | === rtfencode === | ||
| - | |||