Dynamický obsah – customizace šablony dle uživatele

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

V šabloně mám určité místo, kde bych chtěl měnit dynamicky obsah, podle aktuálně přihlášeného uživatele (také je možnost, že uživatel nebude mít žádný special content, a na to místo se tedy nevloží nic).

„Obsahem“ rozumím celou .latte šablonu.

Rád bych se vyhnul prasárnám jako {if $user->id == 12}{elseif $user->id == 666}{/if} apod.
Mám pár nápadů, ale opět, nechám si rád poradit a rád bych zjistil jak by řešili situaci ostatní.

Potřebuji co nejuniverzálnější kus kódu, protože toto chování budu potřebovat na mnoha místech napříč aplikací.

Nejlepší mi přijde zatím asi řešení přes komponentu. V šabloně bych na daném místě vykresloval komponentu {control xyz}. Tato komponenta by interně zjišťovala zda existuje šablona s id uživatele (666.latte), pokud ano, vloží, pokud ne, nic se nestane. Nevýhodou je, že se někdy může stát, že uživatelé budou mít shodný obsah, to bych pak řešil tak, že vytvořím např shared.latte a v 666.latte {include "shared.latte"}. Pro každé místo v aplikaci bych měl jinou třídu komponenty + by všechny měly společného předka, který by obsahoval logiku právě pro zjištění, zda-li existuje šablona pro daného usera a dané místo nebo ne.

Dále mě napadlo jít na úroveň šablon presenterů a dědičnosti. Šablonu rozkouskovat na spoustu blocků a podobně jako u komponenty, hledat šablonu s id uživatele, ve které by pak byly bloky s kódem na místa, která by se měla měnit.

Myšlenkou je to, že uživatel si podá žádost o aktivaci modulu a v případě, že jej chce customizovat, tak abych co nejjednodušeji tohoto docílil bez zbytečné duplikace kódu (ať už šablon nebo php).

enumag
Člen | 2118
+
0
-

Nechat uživatele aby si upravoval latte šablonu je nebezpečné protože do latte může napsat libovolný PHP kód. Na to bych doporučil spíše Twig. Pokud si to nebude uživatel upravovat přímo tak zřejmě budeš mít konečnou sadu předdefinovaných šablon ze kterých si uživatel bude moci vybrat – ale pak u uživatele vždy budeš mít záznam kterou chce což řeší problém.

Uniká mi něco?

Editoval enumag (8. 1. 2016 19:56)

Jan Mikeš
Člen | 771
+
0
-

Sablony jim budu ofc chystat ja, jakozto programator :-) nebudou si editovat sami.

enumag
Člen | 2118
+
0
-

Pak ale uživatel bude mít někde select takže informace kterou šablonu chce bude v db ne?

Jan Mikeš
Člen | 771
+
0
-

Klidne muze byt.