1. Sposób. Pozycje zależą od warstwy logiki
Warstwa logiki narzuca budowę menu.
Kod PHP:
Szablon:
#Build module list ); #Pobierz wpisy menu dla rozszerzeń $res = $db->query('...zapytanie...'); foreach($res as $x) { } #Zbuduj menu tak, aby pojawiły się tylko wpisy, do jakich admin ma dostęp foreach($modules as $x) { } #Dodaj do szablonu zmienną $menu $szablon->dodaj('menu', $menu);
<!-- START menu --> <!-- STOP -->
+ Po dodaniu lub usunięciu modułu nie trzeba edytować szablonu skórki
+ Można wprowadzić możliwość zmiany kolejności elementów w menu
- Zmiana układu menu jest praktycznie niemożliwa
- W przypadku podziału na bloki wpłynie negatywnie na wydajność
Można posegregować linki w grupy, co ułatwia zmianę układu menu (np. na rozwijane menu), ale wciąż są duże ograniczenia (np. rozwijane menu wielopoziomowe), więcej obliczeń w warstwie logiki i podwójna pętla w szablonie:
<!-- START blok_menu --> <!-- START link_menu --> <!-- STOP --> <!-- STOP -->
2. Sposób. Wszystko w szablonach.
Nie budujemy menu w warstwie logiki. Wszystkim zajmują się szablony:
+ Można dowolnie zmodyfikować układ menu w szablonie
+ Warstwa logiki nie narzuca nam konkretnego układu i kolejności
- Trudniejsza edycja szablonu - elementy warstwy logiki w szablonie
- Kiedy dodamy lub usuniemy moduł panelu admina, trzeba poprawić szablon wszystkich skórek!
Jak widać, oba rozwiązania mają swoje wady. Które jest najbardziej optymalne i elastyczne według was?