pododkazy a aktualni zobrazena stranka
- jirkamailto
- Člen | 27
Dobry den,
mam v modulu Admin ruzne hlavni stranky, ke kazde strance prijde menu s odkazy
pro danou podsekci. Kdyz se zobrazi dana stranka, vypise se k ni i prislusne
menu. Mam vizi, ze bych do base presenteru dal pro kazdou sekci pole s odkazy,
pokud by se zobrazila urcita stranka, promena sublinksMenu by se naplnila vzdy
prislusnym polem polem.
if (aktualni zobrazena stranka je MainPage)
{
$this->template->sublinksMenu = array(
'Admin:ModifyUser:' => 'Změnit uživatele',
}
else if (aktualni zobrazena stranka je DalsiStranka)
{
...
}
Potreboval bych se zeptat, zdali je tohle optimalni pristup a dale jak zjistim, kterou stranku ma uzivatel zobrazenou, abych tuto hodnotu predal base presenteru. Predem dekuji za odpoved.
P.S. V base presenteru je to umisteno v metode beforeRender().
Editoval jirkamailto (6. 7. 2010 22:21)
- redhead
- Člen | 1313
Podle mě moc složité. Tuhle logiku bych nechal samotným šablonám a využil bych includování šablon. Mohl bys například mít všechny menu v jednotlivých souborech a includovat je podle zvolené sekce. Například:
{include "@$sekce.menu.phtml"}
V presenteru by stačilo posílat do šablony jméno té sekce. A v jednotlivých souborech by sis definoval menu pro tu kterou sekci potřebuješ
- lucass
- Člen | 89
Když tě to inspiruje, tak já si na toto udělal v databázi tabulku pro hierarchii stránek, prostě sitemap. K tomu pak mám nevykreslitelnou komponentu SitemapComponent, která tuto stromovou strukturou udržuje a kterou načítám vždy v BasePresenteru. Pak mám různé vykreslitelné komponenty jako SitemapMenuControl pro menu, SitemapNavigatorControl pro drobečkové, či SitemapSubtreeControl pro potřebu vypsání podstromu kdekoliv v rámci webu, třeba právě na každé „hlavní“ stránce konkrétní administrační sekce. Všem jako parametr předávám zmíněnou SitemapComponent, z níž se podle nějakých kritérií daná Control načte příslušná část podstromu mapy stránek a vykreslí.
Jinak tu aktuální „stránku“ zjistíš, tuším, v presenteru pomocí $this->getAction(TRUE), která ti vrátí :module:presenter:action tvar. V šabloně je pak makro ifCurrent.
Editoval lucass (6. 7. 2010 22:42)
- jirkamailto
- Člen | 27
Dekuji za vsechny namety. Uz se mi to podarilo a udelal jsem to pres include sablon s menu podle uzivatele redhead. Kazdopadne pres ten base presenter by to take slo, ale musel bych pro kazdy clen toho menu pridat podminku do cyklu if. Vzniklo by z toho neco sileneho.
Jinak na ten base presenter me privedl navod o tvorbe statickeho webu v nette. Jeste jednou dekuji moc za odpovedi.
Editoval jirkamailto (6. 7. 2010 23:42)