Smarty Template Engine 3.díl - První krůčky

Napsal (») 23. 2. 2009 v kategorii PHP/HTML, přečteno: 1695×
obrazky/smarty.gif

Smarty Template Engine 2.díl - První krůčky

Šablonovací systém Smarty máme nainstalovaný v prostoru, kde se bude v budoucnu rozkládat naše webova prezentace, proto se můžeme podívat na jeho základní funkce.

Uložení do hlavičky

Abychom v každém jednotlivém PHP skriptu nemuseli znova a dokola vytvářet tzv. konstruktor třídy Smarty, uložíme si tuto část do speciální souboru, do kterého se obvykle programátoři ukládají např. připojení k DB, základní nastavení přístupu k DB atd... Co takový konstruktor je? Pro Ty z Vás, jež za sebou mají základní objektově orientované programování nejde o nic nového, pro Ty ostatní: Jde zjednodušeně o vytvoření jakési třídy, přes kterou budeme přistupovat k metodám, jež nám tento šablonovací systém nabízí. Uložení do speciálního souboru nám ušetří práci s jeho následným vytvářením na každé jednotlivé stránce naší webové prezentace, jež budeme chtít zobrazit.
Ve složce ./www/test/ (dále jen test) vytvoříme soubor hlavicka.php s tímto obsahem:
<?php
require_once("./smarty/Smarty.class.php");
$smarty = new Smarty();
$smarty->template_dir = './smarty/templates';
$smarty->compile_dir = './smarty/templates_c';
$smarty->cache_dir = './smarty/cache';
$smarty->config_dir = './smarty/configs';
?>

Co jsme tedy provedli? Na začátku skriptu načteme soubor Smarty.class.php, následně vytvoříme objekt smarty a v posledních 4 řádcích už přistupujeme k metodám třídy smarty, v kterých nastavujeme umístění jednotlivých složek, jež tato třída používá. Přesně to samé jsme si v minulém díle ukazovali v testovacím skriptu. Není potřeba zapamatovat si tento zápis nazpaměť, protože více než jednou už ho potřebovat nebudeme.

Obsah index.php, přiřazení, zobrazení

Oproti minulém obsahu skriptu index.php tedy nastane menší změna, a soubor index.php bude vypadat následovně
<?php
require_once("./hlavicka.php");

$libovolna_promenna = "Ahoj Smarty.";
$smarty->assign('pozdrav' , $libovolna_promenna);
$smarty->display('index.tpl');
?>

Jak jste již možná správně pochopili, na prvním řádku načteme příkazy ze souboru hlavicka.php. Na dalším řádku vytvoříme v PHP libovolnou proměnnou , v tomto případě libovolna_promenna, do níž uložíme volitelný text.
Metoda assign pak přiřazuje do šablony tuto proměnou. V apostrofech je naše libovolné pojmenování proměnné v šabloně.
POZOR, název budoucího jména proměnné v šabloně se píše bez značky dolaru!
Metoda display pak určí, do které šablony se mají všechny přiřazené proměnné načíst.

Pokud jste pouze (X)HTML kodér, o tuto část se stará programátor. Na vás zbývá následující:

Soubor index.tpl zůstane nezměněn, přesto připomenu jeho obsah (přidáme pouze základní HTML tagy):
<html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-language" content="cs" />
<title>
Smarty - index
</title>
</head>
<body>

<div>{$pozdrav}</div>

</body>
</html>

Povšimněte si, že obsah proměnné pozdrav vypíšeme uzavřením pouze do složených závorek.

Již v tuto chvíli se dá odpozorovat budou zpřehlednění a oddělení aplikační a prezenční logiky. Kodér sice stále musí do HTML vkládat speciální značky, uzavřením do složených závorek se však postup velice zjednodušuje, zrychluje a kód vypadá mnohem čitelněji.

Shrnutí


  • assign - metoda s parametry ('budouci_jmeno_promenne_v_souboru_tpl' , $promenna_v_php);
    Má za úkol přiradit do šablony data z PHP skriptu, nebo-li:promenna_php->promenna_tpl

  • display - metoda s parametry ('umisten_a_jmeno_sablony');
    Má za úkol určit do které šablony se mají načíst proměnné, přiřazené metodou assign
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel dvanáct a jedenáct