SMARTY – syntaxe šablon
V předchozím článku jsme se seznámili se základní filozofií šablonovacího systému SMARTY. V tomto článku si přiblížíme základy syntaxe šablon a základní použití třídy Smarty v našich skriptech.
Oddělovače
Šablony jsou standardní HTML stránky obsahující klíčová slova, které parser při kompilaci nahradí PHP kódem. K označení klíčových slov používá SMARTY oddělovače (delimiters), které lze libovolně nastavit. Standardně jsou pro tento účel používány složené závorky, které budeme používat i ve všech příkladech tohoto seriálu.
Oddělovače jsou definovány jako hodnota vlastností $left_delimiter a $right_delimiter třídy Smarty. Pokud by nám vyhovovala XML syntaxe, nastavení oddělovačů by mohlo vypadat následovně:
Smarty.class.php:
…
/**
* The left delimiter used for the template tags.
*
* @var string
*/
var $left_delimiter = ‚<smarty:‘;
/**
* The right delimiter used for the template tags.
*
* @var string
*/
var $right_delimiter = ‚/>‘;
…
šablona
…<smarty:$nazev_promenne/>…
Je však nutné upozornit, že tyto oddělovače se nesmí v samotné textu (HTML kódu) vyskytovat. Parser by se je totiž snažil interpretovat. Tomu zabráníme tím, že do textu místo těchto řetězců vložíme příkazy {ldelim} (pro levý oddělovač) a {rdelim} (pro pravý oddělovač).
Často se však stává (hlavně v případě použití složených závorek), že v kódu stránky je těchto znaků velmi mnoho a jejich nahrazení za výše uvedené příkazy by bylo složité a nepřehledné. Takovým případem mohou být kódy JavaScriptu vložené do HTML stránky. Pro tento účel lze použít příkaz {literal} ...text... {/literal}
, který parseru říká, že text jím označený nemá být interpretován.
Proměnné
Proměnné jsou v šablonách označovány stejně jako v PHP skriptech. Tam, kam chceme vložit obsah proměnné, vložíme příkaz {$nazev_promenne}
. Stejně jednoduše lze do šablon vkládat i hodnoty polí a objektů. Asociativní pole jsou vkládány tak, že název pole a klíč je oddělen tečkou. Například {$pole.zamestnanec.jmeno}
je totéž jako v PHP echo $pole["zamestnanec"]["jmeno"]
. Ještě jednodušeji jsou vkládány objekty a indexovaná pole. V těchto případech je syntaxe stejná jako v samotném PHP.
{$pole[0][1]}
{$objekt->vlastnost}
Proměnná $smarty
Systém SMARTY automaticky umožňuje v šablonách používat proměnnou $smarty. Tato proměnná je vlastně asociativním polem, které obsahuje několik velmi důležitých hodnot.
V první řadě jsou to hodnoty proměnných, předaných skriptu v následujících globálních polích: $_GET (resp. $HTTP_GET_VARS), $_POST, $_COOKIE, $_SESSION, $_ENV, $_SERVER a $_REQUEST. Přístup k těmto asociativním polím je velmi jednoduchý. Pokud chceme získat hodnotu proměnné userName předané skriptu odesláním formuláře, použijeme proměnou $smarty v následujícím tvaru: {$smarty.post.userName}
(resp. {$smarty.get.userName}
).
Aktuální počet sekund od 1. 1. 1970 lze přímo v šabloně získat prostřednictvím {$smarty.now}
. Spíše něž počet sekund chceme však na stránkách prezentovat aktuální datum. Jak toho dosáhneme, si řekneme v příštím díle.
Dále lze prostřednictvím proměnné $smarty zjistit název šablony, která je právě zpracovávána ({$smarty.template}
) a zpřístupnit konstanty definované v PHP skriptech prostřednictvím asociativního pole const ({$smarty.const.NAZEV_KONSTANTY}
).
Další hodnoty, přístupné prostřednictvím proměnné $smarty, jsou úzce spojeny s jinými vlastnostmi systému SMARTY a proto se jimi budeme zabývat v dalších dílech.
Příkazy
Příkazy, funkce a řídící struktury jsou do šablon zapisovány obdobně jako proměnné. Pro větší názornost si ukážeme, jak vypadá volání uživatelské funkce (v našem případě funkce math).
<!DOCTYPE HTML PUBLIC „-//W3C//DTD HTML 4.01//EN“ „http://www.w3.org/TR/html4/strict.dtd“>
<html>
<head>
<title>SMARTY</title>
</head>
<body>
<strong>SMARTY Template Engine</strong><br>
pro x = 12, y = 15:<br>
( x + y ) * 12 =
{math equation=“( x + y ) * 12″ x=12 y=15}
</body>
</html>
Komentáře
Do šablon lze vkládat, kromě standardních HTML komentářů, také komentáře sloužící pro editory šablon, které jsou psány ve tvaru: {* text komentáře *}
.
Třída Smarty
Dále si ukážeme základní použití třídy Smarty v PHP skriptech. Prvním krokem je vždy vytvoření nového objektu:
<?php
define( „SMARTY_DIR“, „/home/web/auto-mobily/“ );
$smarty = new Smarty();
První klíčovou metodou objektu $smarty je assign( string nazev_promnene_v_sablone, mixed hodnota ), sloužící k předání hodnoty proměnné šabloně. Máme-li tedy v šabloně proměnnou $pole, předáme jí jednoduché pole následujícím způsobem (totéž platí pro normální proměnné, objekty, apod.):
$smarty->assign( „pole“, array( „první“, „druhá“, „třetí“ ) );
Proměnné nemusíte vždy přiřazovat jen z PHP skriptu, ale můžete je vytvářet i v rámci šablony. K tomuto účelu slouží funkce {assign var="nazev_promenne" value="hodnota"}
(více v budoucích článcích, věnovaných funkcím).
Druhou nejpoužívanější metodou třídy Smarty je metoda display( string nazev_sablony ). Standardně jsou šablony specifikovány jménem souboru (např. index.tpl). Tyto šablony jsou následně hledány v adresáři určeném proměnou $templates_dir. Pokud však chceme použít šablonu umístěnou v jiném adresáři, je možné jako parametr metody display předat úplnou cestu k souboru se šablonou, která je uvozena řetězcem file:.
$smarty->display( „index.tpl“ );
$smarty->display( „file:C:/webs/myweb/templates/index.tpl“ );
?>
Na závěr tohoto článku bych měl jednu radu. Pokud začnete používat SMARTY, snažte se v šablonách používat spíše asociativní pole než jednotlivé proměnné. Ušetříte si tak práci s přiřazováním hodnot proměnným, přičemž díky syntaxi asociativních polí neztratíte v šabloně přehled.
Odkazy
- smarty.php.net (domovská stránka projektu SMARTY)
- smarty.php.net/docs.php (dokumentace k projektu SMARTY)
- smarty.php.net/download.php (aktuální verze ke stáhnutí)
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
inPage AI: Jak na generování obsahu
18. července 2024 -
AI v programování: Jak používat GitHub Copilot (část 1)
12. února 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024