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

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ů

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

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ář

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

> Poslední diskuze

15.6.2017 9:34 / Ondřej Havlas
php,

10.6.2017 10:39 / Temple
sell home for cash

11.5.2017 23:32 / lelo
Re: Problém se správcem balíčků

11.5.2017 5:45 / davd mašek
Re: Problém se správcem balíčků

10.5.2017 22:54 / lelo
Re: Problém se správcem balíčků

Více ...

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