Skip to content

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:

&lt;script&gt;console.log('bezpečné')&lt;/script&gt;

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