Vlastní makro na override šablony
- webdata
- Člen | 153
Zdravím,
Neřešil někdo z vás vlastní makro na override šablony?
Jde mi o to že pokud v šabloně použiju {include sablona.latte} tak se
vloží
sablona.latte která musí být ve stejném adresáři jako je šablona, která
dannou
šablonu vkládá.
Já bych si představoval něco jako vlastní makro {tpl sablona.latte}
stím
že pokud by v adresáři například override exisovala šaloba
sablona.latte,
tak by se vložila tato šablona a pokud by neexistovala, tak by se vložila
šablona z adresáře kde se nachází šablona, která volá sablon.latte.
Jde o podobný princip override šablon jako například v cms joomla.
Předem dík.
Editoval webdata (29. 5. 2012 22:33)
- Jan Endel
- Člen | 1016
Takové makro by bylo třeba si asi napsat (příklad v dokumentaci). Ale spíše mi přijde že nepřemýšlíš Nette-way ale Joomla-way. Spíše řekni nějaký příklad, kde by tohle mělo využití. Třeba přijdeme na lepší řešení.
Editoval pilec (30. 5. 2012 0:02)
- webdata
- Člen | 153
Uvedu tedu příklad.
Uživatel má základní šablony které může použít, ale třeba šabloba která vypisuje malý košík obsahuje jenom například počet položek v košíku.
Uživatel ale chce aby mu to vypisovalo i celkovou cenu zboží a třeba
hlášku, že nelze objednat
protože je minimální hranice objednávky tolik a tolik.
Uživatel tedy může udělat to že si někde v presenteru dodělá funkci a nebo si potřebné informace nějak vytáhne. Toto je docela špatná cesta viz. dále. A nebo si napíše vlastní modul, který to udělá. V tom případě musí v hlavní šabloně změnit/přidat požadované vypisi. Až do teď ok. Ale vydám novou verzi kde třeba do výpisu košíku přidám odkaz „objednat“ a ejhle, zde je problém. Protože pokud uživatel aktualizuje tak to co si tam sám přidal tak o to přijde.
Je tu ještě jedna varianta. Stačí ti defaultní šablona? Pokud ano tak nakrm prase a na nic nesahej. Pokud chceš dělat upravy v šabloně tak si vytvoř kopii celého adresáře šablon který přejmenuj a nastav adresář jako vychozí šablona (ala Joomla).
Takže uživatel by měl mít vymezená pravidla:
Pokud chceš nějaké úpravy v šabloně tak to dávej do tohodle adresáře a já si to tam najdu a když nenajdu tak vložím defaultní šablonu.
Chceš nějakou funkci, vytvoř na to modul.
Udělal jsi upravu v „jadru“ aplikace, sorry při další aktualizaci o to přijdeš. A nebo neaktualizuj.
Vím že to není v souladu s nette, ale v Joomla prostě pro své úpravy v šablonách mám na to vyhrazený adresář templates/mojesablona/html a můžu aktualizoval moduly a komponenty aniž bych měl strach že mi to přepíše nějak upravený vzhled.
Ale když to tak po sobě čtu (a opominu chyby/překlepy které jsou zde jen upoutání pozornosti), tak možná lepší řešení bude stou kopii defaulni šabony. A tím to pro uživatele nebude moc magické.