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

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ů

17.4.2018 0:46 /František Kučera
Dubnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 4. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tématem tohoto srazu bude OpenStreetMap (OSM) aneb svobodné mapy.
Přidat komentář

16.3.2018 22:01 /František Kučera
Kulatý OpenAlt sraz v Praze oslavíme klasicky: u limonády a piva! Přijďte si posedět, dát si dobré jídlo a vybrat z mnoha piv do restaurace Kulový blesk, který najdete v centru Prahy nedaleko metra I. P. Pavlova na adrese Sokolská 13, Praha 2. Sraz se koná ve čtvrtek 22. března a začínáme v 18:00. Heslo: OpenAlt. Vezměte s sebou svoje hračky! Uvítáme, když si s sebou na sraz vezmete svoje oblíbené hračky. Jestli máte nějaký drobný projekt postavený na Arduinu, nějakou zajímavou elektronickou součástku, či třeba i pěkný úlovek z crowdfundingové akce, neváhejte. Oslníte ostatní a o zábavu bude postaráno.
Přidat komentář

13.2.2018 0:41 /František Kučera
Únorový pražský sraz OpenAltu se koná 15. 2. 2018 a tentokrát se vydáme na návštěvu do jednoho pražského datacentra. Sejdeme se v 17:50 v severovýchodní části nástupiště tramvajové zastávky Koh-I-Noor. Po exkurzi se přesuneme do restaurace U Pštrosa (Moskevská 49), kde probereme tradiční témata (svobodný software a hardware, DIY, CNC, SDR, 3D tisk…) a tentokrát bude k vidění i IoT brána od The Things Network.
Přidat komentář

11.2.2018 23:11 /Petr Ježek
Hledáte lehký a rychlý prolížeč PDF souborů? Pokud vás již omrzelo čekat na načítání stránek či jiné nešvary, zkuste xreader.
Přidat komentář

11.2.2018 20:35 /Redakce Linuxsoft.cz
Třetí ročník odborné IT konference na téma Cloud computing v praxi proběhne ve čtvrtek 1. března 2018 v konferenčním centru Vavruška, v paláci Charitas, Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 16 hod. odpoledne. Konference o trendech v oblasti cloud computingu nabídne i informace o konkrétních možnostech využívání cloudů a řešení vybraných otázek souvisejících s provozem IT infrastruktury.
Přidat komentář

15.1.2018 0:51 /František Kučera
První letošní pražský sraz se koná již tento čtvrtek 18. ledna od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Vítáni jsou všichni příznivci svobodného softwaru a hardwaru, ESP32, DIY, CNC, SDR nebo dobrého piva. Prvních deset účastníků srazu obdrží samolepku There Is No Cloud… just other people's computers. od Free Software Foundation.
Přidat komentář

14.11.2017 16:56 /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 – tradičně první čtvrtek před třetím pátkem v měsíci: 16. listopadu od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.11.2017 11:06 /Redakce Linuxsoft.cz
PR: 4. ročník odborné IT konference na téma Datová centra pro business proběhne již ve čtvrtek 23. listopadu 2017 v konferenčním centru Vavruška, v paláci Charitas, Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00. Konference o návrhu, budování, správě a efektivním využívání datových center nabídne odpovědi na aktuální a často řešené otázky, např Jaké jsou aktuální trendy v oblasti datových center a jak je využít pro vlastní prospěch? Jak zajistit pro firmu či jinou organizaci odpovídající služby datových center? Podle jakých kritérií vybrat dodavatele služeb? Jak volit součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně spravovat datové centrum? Jak eliminovat možná rizika? apod.
Přidat komentář

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

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

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