Hlavní navigace

Šablony stránek pro Zope: nákupní košík

27. 6. 2003
Doba čtení: 3 minuty

Sdílet

Základní kámen e-commerce - Nákupní košík bude dnes představen po prezentační stránce. Z předchozího dílu použijeme nové znalosti o jazyce METAL, které nám programování Košíku zpestří. Košík by se dal sice napsat i bez jazyka METAL, ale takto dostanete dvě lekce za cenu jedné. A to není všechno! Zavolejte ihned a přidáme vám tento supervýkonný mixér MišMaš Turbo a zástěru s včelkou Májou!

Pokud jde o klíčové slovo „aq_parent“, zmíněné na konci předchozího díku našeho seriálu, povšimněte si záhadné předpony „aq“. Z praktického hlediska písmena „aq“ neznamenají vůbec nic. Tato předpona je totiž zástupcem podivných artefaktů, které v Zope najdete. Kdysi, tedy před několika lety, se Zope skládalo z více relativně nezávislých programů a každý z nich měl svůj název. Zope se v té době nejmenovalo Zope, nýbrž bylo bezejmenným souhrnem těchto programů – stavebních prvků. Jeden z nich se jmenoval Aqueduct a od něj pochází písmena „aq“.

Do stejné kategorie patří klíčová slova PrincipiaSear­chSource (správně by stačilo SearchSource) a bobobase_modi­fication_time (stačilo by modification_time). Vývojáři aplikačního serveru Zope bohužel nemají žádnou snahu tyto artefakty odstranit nebo aspoň přidat aliasy na „normální“ verze těchto klíčových slov. Je to zkrátka zbytečné psaní navíc.

Vraťme se k našemu příkladu. Teď už skutečně budeme vytvářet Nákupní košík. Můžete smazat šablony sklad a navigace i složku ruze s obsahem. Nebudeme je už potřebovat. Místo toho prosím vytvořte složku (Folder), jejíž Id bude kosik a jejíž název (Title) bude Košík. Pro náš příklad je důležité, abyste položku Title nenechali prázdnou!

Vytvořte šablonu ZPT. Její Id nastavte na index_html a název bude Hlavní stránka. Obsah by měl být následující.

Tato šablona nám bude sloužit jako celostránková šablona pro šablonu ZPT, kterou vytvoříme ve složce kosik a v níž budeme využívat zásuvku body, definovanou výše.

Nyní se tedy přesuneme do složky kosik. Zde vytvořte novou šablonu, opět s Id index_html, a název může být Nákupní košík. Všimněte si položky Expand macros when editing. Zrušte zaškrtnutí čtverečku tesně vlevo od tohoto nadpisu.

Smažte implicitní obsah šablony a vložte toto:

<html metal:use-macro="container/aq_parent/index_html/macros/page">
</html>

Klepněte na tlačítko Save changes.

Nic zvláštního se nestane. Šablona se prostě uloží.

Šablona s makrem METAL

Ale už za okamžik se začnou dít věci. Nejprve zaškrtněte čvereček Expand macros when editing a znovu klepněte na tlačítko Save changes. Výsledek by vás neměl příliš překvapit. V okně se automaticky vyplní zdrojový kód, který jste před chvílí zadali do šablony index_html v nadřízené složce.

Zkuste teď do šablony přidat nějaký text nebo i značku HTML nebo ZPT a výsledek uložte. Zjistíte, že uložení se nepovede! Kdykoliv klepnete na tlačítko Save changes, vždy se znovu objeví původní obsah, převzatý z nadřazené šablony. A to bez ohledu na místo, kam nový text vložíte. Zatím tedy vše funguje jako obyčejná, hloupá direktiva include v běžných programovacích jazycích. Provedete-li ale jemný zásah do jednoho parametru, bude možné nějaké změny udělat.

Posuňte se na řádek s textem  <div metal:define-slot=„body“> a nahraďte jej tímto textem:

<div metal:fill-slot="body">

Nyní znovu zkuste doplnit nějaký text dovnitř značky <div metal:…></div>. Vida, tentokrát se změna uložila. Vložíte-li ale nový text mimo rámec ohraničený značkou  <div metal:…></div>, takový text se neuloží, dokud budete mít zaškrtnutý čtvereček Expand macros when editing. Dlužno zdůraznit, že zaškrtnutí tohoto čtverečku je normální stav a že jsme zaškrtnutí na chvilku zrušili jen pro zdůraznění dramatického efektu při generování makra METAL.

root_podpora

Zamyslete se aspoň na chvilku nad možnostmi, které koncepce maker METAL přináší pro zpřehlednění práce v jazyce ZPT. A pak smažte vše, co je mezi značkami <div metal:…></div> a místo toho mezi tyto značky vložte následující zdrojový text:

A to je hotová aplikace Nákupní košík. Odkazuje se na pět skriptů v jazyce Python: addItems, currentItems, deleteItems, getItem a getTotal. Tyto skripty zajišťují veškerou softwarovou logiku, kdežto prezentaci provádí jen tato dlouhá šablona. Rozebereme si ji v dalších dílech spolu s příslušnými skripty. A nebojte se, žádný ze skriptů už není tak dlouhý jako vlastní šablona.

Byl pro vás článek přínosný?