Vlastní makro na override šablony

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
webdata
Člen | 153
+
0
-

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
+
0
-

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
+
0
-

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é.