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

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ů

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

24.8.2016 6:44 /Ondřej Čečák
Poslední týden CFP LinuxDays 2016; pokud byste rádi přednášeli na LinuxDays 2016 8. a 9. října v Praze, můžete svůj příspěvek přihlásit, následovat bude veřejné hlasování.
Přidat komentář

9.8.2016 22:56 /Petr Ježek
Zařazení souborového systému reiser4 do jádra 4.7 znamená konečně konec patchování jádra jen kvůli možnosti použít reiser4.
Přidat komentář

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

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

> Poslední diskuze

7.12.2016 8:10 / Hamon
scottish cottages

4.12.2016 22:54 / František Kučera
Dárek

9.11.2016 7:42 / Mane
hardwood floor waxing

8.11.2016 13:38 / Mira
Konfigurace maldet na Centos serveru

2.11.2016 11:06 / Warlock
Odkaz v PHP

Více ...

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