Jak ugryźć Konstrukcję menu CMS'a

0

Witam,

piszę małego CMS'a i chciałbym się was doradzić jak zaprojektować menu od środka.
Otóż chcę stworzyć podobny mechanizm jaki jest np w Joomli. Otóż na mojej stronie mam szereg, nazwijmy to modułów. I chcę dać możliwość dodawania tych modułów w formie drzewiastej.
Sprawa ma wyglądać tak: dodaję nowe Menu. Do niego dodają np Artykuł, po nim galerię zdjęć a później jakiś link zewnętrzny... Tylko za bardzo nie wiem jak to zaprojektować w bazie. Każdy moduł ma swoją tabelkę w bazie danych. W załączniku podsyłam (nie wiem czy poprawny) UML z tego co ja zrobiłem.

Rozwiązanie niby działa, ale ma swoje wady. Otóż w Menu_Element::$object_id podaję identyfikator danego obiektu, np artykułu. W Menu_Type podaję nazwę klasy, którą chcę utworzyć przy tworzeniu menu. Czyli wpisuję tam np Model_Article. Później literuję po Menu_Element, robiąc JOIN'a z Menu_Type i niby działa :P jednak, gdy usunę artykuł, to wpis pozostaje, a nie ma za bardzo jak zrobić relację, aby takie wpisy same się usuwały.

Moje pytanie brzmi: jak rozwiązać to w jakiś dobry sposób? Dodać do każdego modułu kolejną tabelkę z relacją Moduł->Element_Menu? Czy jakoś inaczej to zaprojektować?

0

Ja w swoim CMS-ie wstawiłem dwa dodatkowe pola w tabeli 'menu_items': 'menu_type' oraz 'menu_content'. Kontroler, w zależności od zawartości 'menu_type', inaczej będzie interpretował wartość 'menu_content' - dla artykułu będzie to id odpowiedniego rekordu w bazie, url wiadomo itd. Nie jest to rozwiązanie zbyt obiektowe, ale mądry model podłączony pod to powinien załatwić sprawę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0