ďťż
Podstrony
|
telcocafeW panelu administracyjnym znajduje się lista modułów, do których administrator ma dostęp. Jest podzielona na 4 części:* zawartość * użytkownicy * konfiguracja * rozszerzenia Tak, jak na obrazku - w domyślnej skórce: http://www.fototube....,menu8.png.html Obecnie generuję menu w warstwie logiki. Przy pierwszym wejściu do PA tworzę cache, a potem wczytuję go z pliku: function MI($title,$url,$r,$c='plug') { if(Admit($r)) return '<li class="a_'.$c.'"><a href="?a='.$url.'">'.$title.'</a></li>'; } if(isset($_SESSION['admmenu'])) { $menu = file_get_contents('./cache/adm'.UID.'.php'); } else { $menu = '<div class="adm"><ul>'. MI($lang['cats'],'cats','C','cat'). MI($lang['polls'],'polls','P','poll'). MI($lang['ipages'],'pages','IP','page'). MI($lang['rss'],'summary','RSS','rss'). '</ul></div><div class="adm"><ul>'. MI($lang['users'],'users','U','user'). MI($lang['admins'],'admins','AD','user'). MI($lang['groups'],'groups','UG','user'). MI($lang['log'],'log','LOG','log'). MI($lang['mailing'],'mailing','MM','mail'). '</ul></div><div class="adm"><ul>'. MI($lang['config'],'config','CFG','cfg'). MI($lang['dbcopy'],'db','CDB','db'). MI($lang['nav'],'menu','NM','menu'). MI($lang['ads'],'ads','B','ads'). MI($lang['plugs'],'plugins','PI'). '</ul></div>'; #Rozszerzenia - po pobraniu danych z bazy foreach($res as $x) { $ex .= MI($x['text'],$x['file'],$x['ID']); } if($ex) { $menu .= '<div class="adm"><ul>'.$ex.'</ul></div>'; } /* Zapisz układ menu */ }Jednak to nie jest najlepszy pomysł. Nie potrzeba tworzyć cache. Pozostaje pytanie, jak poprawnie wyświetlać menu. Najlepiej przenieść kod HTML do warstwy prezentacji (do szablonu), jednak zależy mi na tym, aby nie wprowadzać do nich za wiele instrukcji warunkowych, bo potencjalna osoba, która będzie chciała zmodyfikować skórkę lub stworzyć nową, pogubi się. Stworzyć w logice 4 tablice (każda zawiera tytuły i URL modułów) i na ich podstawie generować menu w szablonie? Chociaż to też nie zdaje się najlepszym wyjściem. Osobna instrukcja warunkowa dla każdego linku w szablonie?<!-- IF prawa.news --><li ...>...</li><!-- END -->Wtedy po dodaniu modułu trzeba modyfikować szablon. W przypadku rozszerzeń i tak trzeba użyć pętli. Masz jakiś problem w swoim skrypcie to rozwiąż go tak jak chcesz ;) Ogólnie jak będziesz robił menu nie ma znaczenia, ważne żeby działało, a "skórka" (w rozumieniu pliki odpowiedzialne za ogólny wygląd) powinna być pozbawiona "treści" danej strony. Lista modułów to np. UL/LI, lecz tego w skórce się nie zmienia, nie edytuje/nie ma. Można CSSa nadać i tyle. |
|||
Sitedesign by AltusUmbrae. |