Složitější navigace – best practise?

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

Zdravím,
zajímal by mě názor zkušenějších jaké je bast practise pro vytvoření složitější víceúrovňové navigace. Umím to udělat, ale chtěl už bych si to jednou vytvořit pořádně abych to v každém projektu pořád nepřepisoval, když bude víc úrovní/jazyků/položek. ;)

V DB mám data uložená dle systému Closure Table, k vypsání pravděpodobně použiji Navigation od Jana Marka, ale ještě jsem to nezkoušel.

Zajímalo by mě ale jak je to s výkonem – zda si mám celé menu jako objekt nahrát na začátku a uložit do Session nebo zda je výhodné po každé změně struktury vytvořit nějakou cache v souboru na disku, kde už bude ve správném pořadí všechny položky (zvlášť třeba když to má víc jazykových mutací) nebo jestli tohle umí obstarávat Nette snadněji? Nebo zda už je DB a cacheování dotazů tak chytré že už to vůbec nemusím řešit?

Ot@s
Backer | 476
+
0
-

Navigaci řeším přes upravenou (zmiňovanou) komponentu Navigation (= řeším přes ni veškeré možné požadavky aplikace ohledně navigace). V servisním modelu aplikace mám (kešovanou) metodu pro získání kompletního stromu navigace. Následně takto získanou navigací krmím komponentu navigace. Mám vyzkoušené, že z hlediska výkonu/obsazení paměti je jedno, zda-li si přednachystám strom navigace najednou nebo po částech (traverz po větvích navigace). V mém případě se jedná o 10tky až 100ky položek navigace.
To, že to můžu v případě potřeby kdykoli jednoduše přepsat, ani nezmiňuji.

Hafran
Člen | 121
+
0
-

Ot@s: To zní dobře. A tu metodu kešuješ tou standartní Nette funkcí (tady tedy asi $cache->call) anebo máš něco vlastního?

Ot@s
Backer | 476
+
0
-

Přesně tak, jedná se o použití klasického $cache->call.