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 16137×

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ů

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

27.2.2017 22:12 /František Kučera
Pozvánka na 137. sraz OpenAlt – Praha: Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1.3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!
Po ukončení prohlídky se všchni odebereme do hostince U vodoucha, Jagelonská 21, Praha 3 pochutnat si na některém z vybraných piv či dát si něco na zub. Rezervaci máme od 19:30, heslo je OpenAlt.
Ale pozor! Do prostor datového centra máme omezený přístup, dostane se tam pouze 10 lidí! Takže kdo přijde dříve, ten má přednost, a občanky s sebou! Kdo nebude chtít na prohlídku datového centra, může se pomalu přesunout do hostince U vodoucha a u nepřeberné nabídky piv počkat na ostatní.
Přidat komentář

18.1.2017 0:49 /František Kučera
Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.
Přidat komentář

8.1.2017 17:51 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 19. ledna od 18:30 v pražském hackerspacu Brmlab. Tentokrát je tématem srazu ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. K vidění bude mechanická klávesnice dasKeyboard, trackball Logitech nebo grafický tablet (a velký touchpad) Wacom. Přineste i vy ukázat svoje zajímavé klávesnice a další HW. V 18:20 je sraz před budovou, v 18:30 jdeme společně dovnitř, je tedy dobré přijít včas. Podle zájmu se později přesuneme do nějaké restaurace v okolí.
Přidat komentář

1.12.2016 22:13 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.
Komentářů: 1

4.9.2016 20:13 /Pavel `Goldenfish' Kysilka
PR: Dne 22.9.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í, provozování ERP v cloudu, o hostování různých typů softwaru, ale třeba i o zálohování dat nabízeném podnikům formou služby.
Přidat komentář

1.9.2016 11:27 /Honza Javorek
Česká konference o Pythonu, PyCon CZ, stále hledá přednášející skrz dobrovolné přihlášky. Máte-li zajímavé téma, neváhejte a zkuste jej přihlásit, uzávěrka je již 12. září. Konference letos přijímá i přednášky v češtině a nabízí pomoc s přípravou začínajícím speakerům. Řečníci mají navíc vstup zadarmo! Více na webu.
Přidat komentář

27.8.2016 8:55 /Delujek
Dnes po 4 letech komunitního vývoje vyšla diaspora 0.6.0.0
diaspora* je open-source, distribuovaná sociální síť s důrazem na soukromý
Více v oficiálním blog-postu
Přidat komentář

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

> Poslední diskuze

24.3.2017 11:54 / Hui
country cottages

16.3.2017 16:33 / BezvaDesign.cz
Re: Hledám grafika do teamu

9.3.2017 11:44 / Jaromir Obr
Re: chyba

18.1.2017 20:18 / martin horky
Spolupraca linuxu a microsoftu

17.1.2017 9:57 / Pavel Hrubeš
Re: Externí USB televizní karta

Více ...

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