LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> PHP Knihovny - Smarty

Při práci na rozsáhlejších WWW projektech je užitečné a poměrně důležité oddělit zpracování dat od zobrazení výsledků, k tomu nám mohou posloužit šablonové systémy...

21.2.2005 15:00 | MaReK Olšavský | Články autora | přečteno 15762×

Proč Smarty?

V seriálu Petra Zajíce o PHP a v komentářích pod některými díly bylo několikrát zmíněno, že je rozumné používat nějaký šablonovací systém, který Vás "donutí" oddělit kód pro zpracování dat od jejich vizualizace. Pokud bychom nepsali o PHP, tak tento koncept je velmi dobře řešen na .NET platformě, ale realizovatelný a realizovaný i na platformě Python (Zope), Perl (petal), ...

Jedním z nejlepších a nejživějších projektů je Smarty. Jeden z mých přátel, kteří se zabývají vývojem WWW stránek o nich řekl: "Na začátku na ně budeš nadávat, po měsíci v nich budeš pohodě dělat a po pár měsících je budeš milovat". Pochopil jsem ihned a dneska na ně nedám dopustit.

Námitkou proti použití Smarty by mohlo být proč se učit jakýsi pseudojazyk, když totéž mohu udělat "jen" pomocí PHP a rozdělením na script se zpracováním dat a druhý, includovaný na konci, kde se postarám o zobrazení zpracovaných dat. Odpověď může být například takováto: jsou psány tak, aby se je snadno naučil i programátorsky neorientovaný webdesigner/typograf. Šablony můžete využít nejen do HTML, ale i WML, nebo XML.

Smarty nejsou uzavřený systém, který vyvíjí pár programátorů někde ve světě, ale je otevřený pro rozšíření od dalších vývojářů pomocí pluginů, nebo přímého připojení se k projektu. Z mnoha příkladů pluginů budu jmenovat SmartyRSS a SmartyValidate.

Podobně jako u EZ_SQL by bylo špatné si myslet, že existuje jediný šablonovací systém. Z konkurence si dovolím vyzdvihnout zejména FastTemplate, php-templates a bTemplate. Bohužel kromě Smarty ostatní projekty nevykazují aktivitu už po delší dobu, alespoť ty, které jsem tu zmínil a jsou nejznámější z těch ostatních. O kvalitách Smarty přesvědčuje i to, že je oficiálně na doméně PHP.

Mimochodem, koukněte se do Česko-Anglického slovníku, co znamená slůvko smarty a přesně to vystihuje tento šablonovací sytém.

Smarty nejsou šablonami využívanými jen v malých PHP projektech, poměrně dlouhou dobu prý pomocí nich byly tvořeny stránky České Spořitelny, která však přešla na javu (jsp), v současnosti z mě známých projektů nad nimi pracuje například firma Web2Way, nejméně jeden programátor z firmy WebStart a je na nich stavěn blogovací PHP systém bBlog.

Shrňme si plusy a minusy, které při použití Smarty šablon v současné době považuji za nejvýznamější:

Výhody:

  • "Nutí" k oddělení zpracování dat od jejich prezentace
  • Jsou snadné k naučení
  • Podporovaný projekt od PHP
  • Živý projekt, který se neustále vyvíjí
  • Možnost tvorby vlastních pluginů
  • Práce s cache na serveru

Nevýhody:

  • Programátor se "musí" naučit další jazyk
  • Programátor by měl umět objekty
  • Pomalejší zpracování
  • Větší množství dat, které budete umísťovat na server
  • U vyvojaru na Win nezvyk v nastaveni prav adresaru pri prenos na UN*X based server

Smarty šablony fungují ve dvou krocích. Pokud návštěvník otevře stránku, ve které vývojář použil Smarty, hlavní script zkontroluje v adresáři pro kompilované šablony, jestli tam již není zkompilovaný PHP script, pokud jej najde a datum tohoto scriptu je novější, než datum použité šablony je tento script odeslán ke zobrazení serveru, pokud je datum starší, nebo script tam není vůbec, je šablona nejprve "zkompilována" do podoby PHP scriptu. Pokud autor stránek nemění šablony definující zobrazení dat a stránek, probíhá kompilace jen jednou.

V případě, že autor tvoří sídlo, u kterého čeká velikou návštěvnost, ale ne příliž rychlou (například po minutě) aktualizaci dat, je vhodné použít cacheování vygenerovaných stránek, čímž se sníží zatížení PHP serveru i databáze. Při použití této schopnosti je třeba najít rozumnou dobu životnosti cache v závislosti na četnosti změn dat v databázi.

První kroky

Požadavky

Pokud chcete ve svých projektech používat Smarty šablony, musíte splnit několik základních požadavků:

  • Umět PHP (jinak byste asi tento seriál ale nečetli)
  • Mít nainstalované PHP ve verzi >4.0.6
  • Vytvořit v souborové struktuře webu několik adresářů s patřičnými právy

Stažení a instalace

Smarty můžete stáhnout z adresy http://smarty.php.net/. Stáhnout můžete obvykle některou z posledních verzí projektu, doporučuji však používat úplně poslední verzi, která má nejméně chyb, se staršími verzemi byli občas problémy na hostinzích, protože vytváří poměrně "divoké" názvy u jím vytvářených souborů (zkompilovaných šablon).

rozbalit do adresářové struktury Vašich WWW projektů, nejlépe do adresáře smarty v kořenovém adresáři projektu. Dalším krokem je vytvoření adresářů pro konfigurační soubory pro šablony (obvykle pojmenujeme config), pro šablony jednotlivých stránek (templates) a pro zkompilované šablony (ctemplates). Adresář pro uložení konfigurací (config) je volitelný, stejné je to u adresáře, jehož využití si ukážeme později a který můžete pojmenovat třeba cache. Adresáře pro uložení zkompilovaných stránek a pro cache musí mít nastavená práva nejen pro čtení, ale i pro zápis.

Pokud máte Smarty rozbalené a adresáře vytvořeny, můžete nyní provést jejich nastavení. Veškerá nastavení jsou v souboru /smarty/Smarty.class.php, kde adresář smarty nahradíte adresářem, kam jste si je uložili Vy. Základní nastavení jsou tato:

  • $template_dir - adresář, do kterého ukládáte šablony Vašich stránek, například var $template_dir = './../templates/';
  • $compile_dir - adresář, do kterého Smarty_Compiler.class.php (kompilátor Smarty) ukládá šablony přeložené do PHP, v našem případě, by to bylo var $compile_dir = './../ctemplates/';
  • $config_dir - konfigurace pro šablony, například var $config_dir = './../config/';
  • $plugins_dir - adresáře s pluginami, uvedeno jako pole, může být například var $plugins_dir = array('./../plugins/','./../myplugins/');
U nastavení adresářů nesmíte zapomenout na koncové lomítko. Nastavení je v tomto souboru pochopitelně trochu více, ale ostatním, týkajícím se zejména cache a ladění stránek se budeme věnovat o něco později.

První stránka

V mém nedávném článku o EZ_Sql jsem psal o tom, jak mám organizovány zdrojové kódy v mých PHP projektech, na kterých pracuji. Scripty ukládám do adresáře ./www/ a adresáře spojené se Smarty jsem uvedl výše.

Stránka psaná pomocí Smarty šablon se skládá obvykle minimálně ze dvou souborů. Jednoho PHP, kde zajišťujete zpracování dat a druhého, ve kterém je šablona (minimálně jsem uvedl proto, že jsem zanedbal možnost rozdělení šablony na několik částí, obrázky, ...). V originální dokumentaci je pro šablony uváděna přípona .tpl, já jsem začal používat koncovku .html, kvůli zvýrazňování v HTML editoru. Skvělý jEdit by prý už měl mít pluginu, která zvýrazňuje i syntaxi Smarty šablon, o definici pro editor Quanta v současnosti nevím.

Nyní si zkusíme napsat nejjednodušší možnou stránku pomocí Smarty šablon.

Kód PHP:

<?php
//requires
require_once './../smarty/Smarty.class.php';

$page = new Smarty();

$page->display('prvni.html');
?>
V tomto kódu používáme z "PHP strany" Smarty šablon metodu display, jejímž parametrem je název šablony, kterou chcete scriptu přiřadit. Kód této šablony může vypadat třeba následujícím způsobem:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
    <title>První Smarty stranka</title>
</head>
<body>
<br>
Dnes je: {$smarty.now|date_format:"%d.%m.%Y"}<br>
Muj mail je {mailto address='muj@mujmail.cz' encode='javascript' subject='Jdeme na piwo'}
</body>
</html>
Společně se zobrazením data jsem Vám dal na první Vaší první Smarty stránku mail, který bude v prohlížeči uveden v JavaScriptu, takže docela obtížně nalezitelný pro spamovací roboty.

Závěrem

Toto je první díl další série o PHP knihovnách, které stojí za pozornost vývojářů webových aplikací. V příští části se budeme věnovat způsobu psaní smarty (syntaxi) a řídícím strukturám.

Verze pro tisk

pridej.cz

 

DISKUZE

TemplatePower 21.2.2005 16:38 Vojtěch Semecký
L Re: TemplatePower 21.2.2005 19:59 MaReK Olšavský
chyba v html kódu stránky 4.3.2005 19:31 toor
  L Re: chyba v html kódu stránky 5.3.2005 11:26 Ivan Majer




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

12.7.2016 13:14 /František Kučera
Spolek OpenAlt zve na 130. distribuovaný sraz příznivců svobodného softwaru a otevřených technologií (hardware, 3D tisk, SDR, DIY, makers…), který se bude konat ve čtvrtek 21. července od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

11.7.2016 16:53 /Redakce Linuxsoft.cz
Konference LinuxDays hledá přednášející. Přihlášky poběží do konce prázdnin, v září bude hlasování a program. Více na https://www.linuxdays.cz/2016/cfp/.
Přidat komentář

8.5.2016 17:19 /Redakce Linuxsoft.cz
PR: Dne 26.5.2016 proběhne v Praze konference Cloud computing v praxi. Tématy bude např. nejnovější trendy v oblasti cloudu a cloudových řešení, cloudové služby, infrastruktura cloudu, efektivní využití cloudu, možné nástrahy cloudů a jak se jim vyhnout
Přidat komentář

21.4.2016 8:01 /František Kučera
Spolek OpenAlt zve na 127. distribuovaný sraz příznivců svobodného softwaru a otevřených technologií (hardware, 3D tisk, SDR, DIY, makers…), který se bude konat ve čtvrtek 28. dubna od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

2.3.2016 22:41 /Ondřej Čečák
Letošní ročník konference InstallFest již tento víkend!
Přidat komentář

14.2.2016 16:39 /Redakce Linuxsoft.cz
O víkendu 5. a 6. března 2016 proběhne na pražském Strahově 8. ročník tradiční konference InstallFest. Celkem za dva dny uvidíte ​30 přednášek​ a ​6 workshopů.
Přidat komentář

5.2.2016 17:38 /Petr Ježek
Utilitka z XFce "xfce4-power-manager" nejen umožňuje nastavení lhůty pro uspání či hybernaci, ale i zapínání a vypínání prezentačního módu pro nerušené sledování videí. Stačí ji nastavit v každém vybavenějším panelu a v jakémkoli nontiled WM/DE.
Přidat komentář

10.1.2016 11:32 /Pavel `Goldenfish' Kysilka
LinuxMarket změnil provozovatele. Nově jej provozuje Marek Pszczolka. Více info a detaily #1 a #2.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

28.7.2016 15:51 / pepan
Re: NetBeans vs Eclipse

10.6.2016 21:10 / pavel riha
FreeBSD 10.3 a virtualizace

8.6.2016 21:56 / Milan Gallas
Nevalidní prefix m

7.5.2016 14:58 / Teodor Komárek
Soubory

20.4.2016 0:07 / Jakub Cleing
Sázkový panel PHP FUSION

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2016) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze