Hlavní navigace

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

Miloš Průdek 27. 6. 2003

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.

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.

Našli jste v článku chybu?
Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami