Introduction -- Creating and Parsing templates
Templates
A template consists of text and special labeled blocks and placeholders.
The content of blocks can be re-used and parsed multiple times with different
placeholder values.
Пример 43-1. A typical template
<html>
<body>
Userlist
<table>
<!-- BEGIN row -->
<tr>
<td>{USERNAME}</td>
<td>{EMAIL}</td>
</tr>
<!-- END row -->
</table>
</body>
</html> |
|
Placeholder
Placeholders can be defined in templates and are filled from
PHP code with content.
The format of placeholder up to version (1.1.x) is
Since version 1.2.x dots are allowed, too.
This means, the name of the placeholder can consist of upper- and lowercase
letters, underscores and hypens. The name must be placed between curly
brackets without any spaces.
Valid names are i.e.:
{Placeholder} |
{place2_holder} |
{PLACEHOLDER1} |
{Place-Holder} |
Valid names since version 1.2.x
Non-valid names are i.e.
{ Placeholder 3 } (spaces) |
{place*holder} (char isn't permitted) |
Blocks
The format of a block is
<!-- BEGIN [0-9A-Za-z_-]+ -->
... block content ...
<!-- END [0-9A-Za-z_-]+ --> |
Since version 1.2.x dots are allowed in block definitions
<!-- BEGIN [\.0-9A-Za-z_-]+ -->
... block content ...
<!-- END [\.0-9A-Za-z_-]+ --> |
The rules for the block name are the same like for placeholders.
In contrast to placeholders the spaces in the block markup are
required.
The nesting of blocks is permitted, but be careful while
parsing. You have to set and parse the deepest inner block first
and then set and parse from inner to outer.
In IT the whole template file itself is nested in a meta block called
"__global__". Most block-related functions use this block
name as default.
Usage Example
Пример 43-2. The template
<html>
<table border>
<!-- BEGIN row -->
<tr>
<!-- BEGIN cell -->
<td>
{DATA}
</td>
<!-- END cell -->
</tr>
<!-- END row -->
</table>
</html> |
|
Пример 43-3. The script
<?php
require_once "HTML/Template/IT.php";
$data = array
(
"0" => array("Stig", "Bakken"),
"1" => array("Martin", "Jansen"),
"2" => array("Alexander", "Merz")
);
$tpl = new HTML_Template_IT("./templates");
$tpl->loadTemplatefile("main.tpl.htm", true, true);
foreach($data as $name) {
foreach($name as $cell) {
// Assign data to the inner block
$tpl->setCurrentBlock("cell") ;
$tpl->setVariable("DATA", $cell) ;
$tpl->parseCurrentBlock("cell") ;
}
// parse outter block
$tpl->parse("row");
}
// print the output
$tpl->show();
?> |
|
Пример 43-4. The output
<html>
<table border>
<tr>
<td>
Stig
</td>
<td>
Bakken
</td>
</tr>
<tr>
<td>
Martin
</td>
<td>
Jansen
</td>
</tr>
<tr>
<td>
Alexander
</td>
<td>
Merz
</td>
</tr>
</table>
</html> |
|