Snippety činí z Etomite nástroj, který je prakticky bez jakýkoliv omezení. Kromě jednoduchých snippetů, které vám usnadňují práci, můžete vytvářet v podstatě libovolné PHP funkce, které zvládnou cokoli. Existují snippety, které mají funkčnost galerie, jiné fungují jako návštěvní kniha. Můžete zobrazovat novinky, vytvořit RSS kanál, jeden můj kamarád dokonce používá Etomite jako blog.
Správa snippetů
Pokud chcete tvořit vlastní snippety, měli byste znát alespoň základy jazyka PHP. Pokud ani nevíte, co to je, a nechcete to vědět, můžete se na konci dnešního článku dočíst, kde sehnat snippety hotové.
Když potřebujete snippety prohlížet, upravovat a tvořit, učiníte tak ve Správě funkcí a zdrojů. Je to položka v menu, kterou najdete po ruce v pravém horním rohu navigace. Dnes se budeme (překvapivě) zabývat kartou Snippety. Pokud si nepamatujete, jak se dostat do administračního rozhraní, podívejte se na začátek druhého dílu tohoto seriálu.
Hello world!
Vyplatí se začít tradičně. Klikněte tedy na položku Nový snippet, která se nachází nad seznamem snippetů. A můžete tvořit. Název snippetu si představte jako název funkce. Pomocí něj budete snippet na stránce zobrazovat. Není tedy vhodné zvolit název "Krasny uzitecny snippet na ukazani prikladu pouziti snippetu v Etomite", ale doporučuji spíš název HelloWorld. Předchozí příklad názvu pak můžete použít v kolonce Popis snippetu. Kolonka Pokračovat v úpravách po uložení prostě určuje, kam vás Etomite přesměruje po kliknutí na tlačítko Uložit. V případě zaškrtnuté položky se vrátíte k úpravě vytvářeného snippetu, v případě opačném do seznamu snippetů. Z vlastní zkušenosti musím říct, že je rychlejší kliknout na Uložit a po přesměrování zpět na editaci kliknout na Přerušit, než se zabývat nějakým zaškrtávacím políčkem. Položka Zamknout snippet proti úpravám způsobí, že snippet budete moci upravovat pouze vy. O správě uživatelů si toho povíme více v některém z příštích dílů.
Do velkého textového pole přijde samotný obsah snippetu. Všechno platí jako u normální PHP funkce s tím rozdílem, že se do obsahu snippetu nepíšou hlavičky ani ohraničující závorky. Příklad vidíte na obrázku.
Ve snippetech není dobré používat echo, jednoduše pomocí return vrátíte to, co se má ukázat v dokumentu. Možná se ptáte, jak předáte funkci vstupní parametry, když nemá hlavičku. To si ukážeme na dalším příkladu, až se dozvíte, jak snippet zavolat v dokumentu.
Použití v dokumentu
Je čas procvičit si znalosti z druhého dílu. Vytvořte tedy nový dokument, nebo upravte stávající. Někde v obsahu dokumentu zavolejte snippet pomocí dvojitých hranatých závorek:
[[HelloWorld]]
Volání snippetu můžete samozřejmě formátovat. Pokud však budete formátovat jen část volání, snippet se nezobrazí. Etomite uvidí název snippetu např. jako Hello<em>World a takový název nezná. Ověřit (ne)funkčnost můžete pomocí zobrazení dokumentu.
Předávání parametrů
Nyní vytvoříte snippet, který ke svému běhu potřebuje parametry. Připravil jsem příklad snippetu, který zobrazuje přehrávač videí YouTube a jako parametr potřebuje kód videa. Alternativně lze ručně nastavit jeho barevnou variantu nebo velikost.
// Vychozi hodnoty if (!isset($width)) $width = 480; if (!isset($height)) $height = 385; if (!isset($color1)) $color1 = '234900'; if (!isset($color2)) $color2 = '4e9e00'; $output = '<object width="'.$width.'" height="'.$height.'"><param name="movie" value="http://www.youtube.com/v/'.$video.'&hl=cs&fs=1&rel=0&color1=0x' . $color1 . '&color2=0x' . $color2 . '"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/'.$video.'&hl=cs&fs=1&rel=0&color1=0x' . $color1 . '&color2=0x' . $color2 . '" type="application/x-shockwave-flash" allowfullscreen="true" width="'.$width.'" height="'.$height.'"></embed></object>'; return $output;
Snippet pak voláte pomocí [[YouTube?video=abcd123_XYZ]]
, kde směsice znaků je kód videa (najdete ho v URL YouTube videa). Pokud chcete použít parametrů více, přidáváte je podobně jako v URL. Pokud chcete video například o něco menší, použijete [[YouTube?video=abcd123_XYZ&width=320&height=255]]
. Na pořadí parametrů vůbec nezáleží, jen musíte použít stejné názvy, s jakými pak počítáte ve snippetu (na rozdíl od volání funkce, kde je to obráceně).
Etomite API
Pokud chcete snippety v Etomite používat efektivně, hodí se umět získat název dokumentu, jeho popis, pozici ve stromu a pod. K tomu potřebujete znát Etomite API, které je velmi dobře zdokumentováno v oficiální dokumentaci. Uvedu jen několik příkladů:
$id = $etomite->documentIdentifier;
vám prozradí ID aktuálního dokumentu, se kterým poté můžete pracovat.$doc = $etomite->getDocument($id);
vytvoří pole informací o dokumentu.- Pomocí
$doc['pagetitle']
a podobně získáte informace o dokumentu.
Cache: nepřítel snippetů
Zatím jsem si ukázali snippety, které budou po každém zavolání vypadat stejně. Pokud ale pomocí snippetů vytváříte dynamický web, tedy pokud máte například snippet na návštěvní knihu, bude vám jistě vadit cachování. Etomite defaultně cachuje všechny stránky a obsah cache promazává jedině při úpravě. Jenže to u některých snippetů vadí. Řešení jsou dvě, respektive tři. Můžete snippet místo standardního způsobu volat způsobem, který Etomite řekne, že obsah snippetu se cachovat nemá:
[!GuestBook?param=neco!]
Druhou možností je vypnout cachování u dokumentů s takovými snippety. Dělá se to zaškrtávacím políčkem Ukládání do cache na kartě Nastavení dokumentu při jeho editaci nebo vytváření. Další možností, kterou jsem uvedl jako "respektive", je vypnutí cache úplně. Nejdříve ji povypínáte pro existující dokumenty a poté v konfiguraci zrušíte volbu Ukládání do cache. Tím vás cache přestane trápit. Tato možnost teoreticky může zvýšit nápor na databázi, ale nijak zvlášť jsem to nepocítil.
V Etomite je možné volat části PHP kódu přímo v dokumentu, ale není to doporučováno. Můžete to zakázat, nebo povolit na poslední kartě konfigurace Etomite pomocí položky Povolit vkládání PHP.
Kam pro snippety?
První místo, kde seženete hotová řešení snippetů, je vaše instalace Etomite. Jak jste si mohli všimnout, obsahuje přes dvacet hotových snippetů, které můžete používat. Některými se budu zabývat v příštím díle o šablonách a chuncích. Další stovka je v databázi snippetů na fóru Etomite.com. V našich končinách se oplatí zabrousit i do té na fóru Etomite.sk, protože obsahuje snippety lokalizované a snippety od českých a slovenských autorů. Na začátku většiny snippetů najdete zakomentovaný návod pro jejich použití.
Co dál?
Nyní víte, jak se snippety tvoří. Ke konkrétním případům vhodného použití snippetů (návštěvní kniha, galerie obrázků a pod.) se dostanu v budoucnu. V příštím díle se však budu zabývat šablonami a chunky. Dozvíte se, jak změnit vzhled svého webu.