pododkazy a aktualni zobrazena stranka

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

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)

Lopata
Člen | 139
+
0
-

Myslím, že odkazy nemají v Presenteru co dělat. Celou tuto logiku bych přesunul do šablony, kde bych využil makro {ifCurrent} a řešil to až tam. Pokud je těch odkazů hodně, je možné includnout celou novou šablonu.

redhead
Člen | 1313
+
0
-

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

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

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)