RainTPL - Template Engine
RainTPL již není vyvíjen! Proto je vložen do core systému přímo a je upravovaný v rámci CMS pro vlastní potřebu.
Je to skvělý a hlavně jednoduchý systém šablon, který lze krásně ohýbat pro potřeby CMS, na rozdíl od vynikajícího Latte.
Základní příklad
Šablona index.tpl:
<!DOCTYPE html>
<html>
<head>
<title>{$title}</title>
</head>
<body>
{$content}
</body>
</html>
PHP kód:
$tpl = new Template();
$tpl->data('title', 'Moje stránka');
$tpl->data('content', '<h1>Vítej!</h1>');
echo $tpl->draw(__DIR__ . '/index.tpl');
Tagy a příkazy
{$proměnná} - Proměnné
Výstup dynamického obsahu šablony. Proměnné se nastavují metodou data().
Příklad:
{$name}, jsem tvůj otec!
Výstup:
Luke, jsem tvůj otec!
Přístup k polím a vlastnostem
{$array.key} {* Prvek pole *}
{$object->element} {* Vlastnost objektu *}
Modifikátory a operace
Matematické operace a funkce na proměnné:
{$a=1}
{$b=2}
{$sum=$a+$b}
{$title|cut:10} {* Ořízne na 10 znaků *}
{$title|touppercase|cut:7} {* Velká písmena, pak ořízne *}
{$value|Petrovo\String\cut:100} {* Vlastní funkce *}
{$value|noescape} {* Neuniká HTML *}
{#konstanta#} - Konstanty
Přístup ke konstantám definovaným v PHP:
{#URL#}
{#date('Y')#}
{#CONFIG['version']#}
{if="výraz"} - Podmínky
Kontrola výrazu a podmíněný výstup:
{if="$age<18"}
Jsi mladistvý
{else}
Jsi dospělý
{/if}
{loop="$pole"} - Cykly
Smyčka přes prvky pole nebo objektu:
<ul>
{loop="$weekday"}
<li>{$key}, {$value}</li>
{/loop}
</ul>
Výstup:
<ul>
<li>0, Neděle</li>
<li>1, Pondělí</li>
...
</ul>
Speciální proměnné v cyklu
{loop="$items"}
{$key} {* Klíč prvku *}
{$value} {* Hodnota prvku *}
{$counter} {* Počet iterací (od 0) *}
{if="$counter == 5"} {break} {/if} {* Ukončit cyklus *}
{if="$counter == 3"} {continue} {/if} {* Přeskočit iteraci *}
{/loop}
{function="funkce()"} - Funkce
Volání PHP funkce a výpis výsledku:
{function="date('Y-m-d')"}
{function="strlen($text)"}
Výstup:
2024-10-16
42
{* komentář *} - Komentáře
Vše mezi {* a *} se ignoruje:
Ahoj {* {$name} co se děje? *} kamaráde?
Výstup:
Ahoj kamaráde?
Alternativa s {ignore}:
Text mimo ignorování
{ignore}
Tady se ignoruje {$var}
{/ignore}
Zase viditelné
{noparse} - Bez parsování
Obsah mezi {noparse} a {/noparse} se nekompiluje:
{noparse}
Toto je {$title} - nebude zpracováno
{/noparse}
Výstup:
Toto je {$title} - nebude zpracováno
{autoescape="off"} - Escapování HTML
Standardně se HTML escapuje. Vypnout escapování:
{autoescape="off"}{$safe_variable}{/autoescape}
{$safe_variable|noescape}
Příklad:
{autoescape="off"}<script>console.log('bezpečné')</script>{/autoescape}
Výstup:
<script>console.log('bezpečné')</script>
Bez vypnutí escapování by výstup byl:
<script>console.log('bezpečné')</script>
Konfigurace
RainTPL se v CMS konfiguruje v metodě rainInit() v core/Template/BaseTemplate.php:
$config = [
'tpl_dir' => DIR . '/app/templates/',
'cache_dir' => DIR . '/var/rain/',
'tpl_ext' => 'tpl',
];
Tpl::configure($config);
Poznámky
- Proměnné jsou case-sensitive
- RainTPL je součást CMS a je upravován pro vlastní potřebu
- V moderních šablonách CMS se preferují vlastní tagy
{T},{+},{S}nad RainTPL tagy - RainTPL slouží jako podklad pro finální renderování šablon