Shop Projekt - Dokumentation
Navigations-Generierung & nav_UID-Kontext
Das Navigationssystem ist als datengetriebenes Domain-Modell aufgebaut (nav.service.php & nav.model.php). Es trennt strikt zwischen logischer Struktur, Zugriffssicherheit, Lokalisierung und der UI-Darstellungsschicht.
Architektonische Regeln & Zustandshaltung (nav_UID)
- Die nav_UID wird aus der URL extrahiert und für die Dauer des Kontexts stabil in der Session gehalten.
- Sowohl die Sidebar als auch die Inhalts-Kacheln (Tiles) verwenden diese nav_UID für den exakten Abgleich des aktiven Knotens.
- Sollte eine nav_UID komplett fehlen, greift automatisch ein Fallback-Mechanismus auf Basis der Kategorie-ID oder des aktuellen Page-Keys.
Verantwortlichkeiten der Schichten
Datenstruktur & State-Management
Die Navigation wird dynamisch aus der SQL-View v_navigation_base generiert (Kombination aus tb_page für Controller-Ziele und tb_category für die fachliche Gliederung). Der nav.service.php konvertiert diese flache Liste über die Methode buildSidebarTree() in eine Baumstruktur. Ein Navigationspunkt wird hierbei eindeutig durch das Paar {page, cat} identifiziert. Die Zustandserkennung (active und open) erfolgt automatisiert anhand der Session- und URL-Parameter.
Internationalisierung (Label-System)
Die Beschriftung ist strikt getrennt: Statische Menütexte und Buttons nutzen das Interface-Label-System (Gruppen nav und global). Dynamische Kategorienamen (Inhaltsdaten) werden direkt aus einer sprachspezifischen Kategorie-Tabelle geladen.
Der Request-Ablauf im Navigations-Kontext
- Request: Aufruf trifft auf die zentrale
index.php. - Routing: Auflösung via
resolvePage(),resolveCategory()undresolveLanguage(). Speicherung der IDs in der Session (Lazy Loading). - Security: Aufruf von
checkPageByKey()und Abgleich der Rollenberechtigungen mittelsuserHasAccess(). - Service-Load: Der Nav-Service generiert die Strukturen basierend auf den aktuellen Kontext-Keys und der
nav_UID. - Rendering: Die View erhält spezialisierte Arrays (
sidebarfür den Menübaum,pathfür Breadcrumbs,tilesfür Dashboard-Kacheln).
Aktuelle Baum-Struktur (Logische Sicht)
Hierarchische Übersicht der Seiten- und Kategorieverschmelzung innerhalb des Marktplatzes:
home page & cat - lv 0
├─ article_editor page & cat - lv 1
├─ product page & cat - lv 1 (special)
├─ article page & cat - lv 1 (special)
├─ marketplace page & cat - lv 1
├─ trading page & cat - lv 1
│ ├─ trading_cards cat - lv 2
│ │ ├─ trading_cards_yugioh cat - lv 3
│ │ ├─ trading_cards_magic cat - lv 3
│ │ └─ trading_cards_pokemon cat - lv 3
│ ├─ trading_model cat - lv 2
│ │ ├─ trading_model_maerklin cat - lv 3
│ │ ├─ trading_model_roco cat - lv 3
│ │ └─ trading_model_kleinbahn cat - lv 3
│ └─ trading_stamps cat - lv 2
├─ topic page & cat - lv 1
│ ├─ topic_onepiece cat - lv 2
│ ├─ topic_lordofthering cat - lv 2
│ └─ topic_yugioh cat - lv 2
│ └─ trading_cards_yugioh (ref)
├─ digital page & cat - lv 1
│ ├─ digital_service cat - lv 2
│ ├─ digital_support cat - lv 2
│ ├─ digital_design cat - lv 2
│ └─ digital_3d cat - lv 2
├─ workshop page & cat - lv 1
│ ├─ workshop_service cat - lv 2
│ └─ workshop_build cat - lv 2
├─ community page & cat - lv 1
│ ├─ community_feed cat - lv 2
│ └─ community_vote cat - lv 2
├─ helper page & cat - lv 1
│ ├─ category_editor page & cat - lv 2
│ └─ product_editor page & cat - lv 2
├─ support page & cat - lv 1
│ ├─ frequently_asked_questions cat - lv 2
│ ├─ general_terms_conditions cat - lv 2
│ └─ about (ref)
└─ messenger page & cat - lv 1
user_list page & cat2 - lv 0
├─ user_add page & cat2 - lv 1 (special)
└─ user_edit page & cat2 - lv 1 (special)
label_editor page - lv 0
about page - lv 0
login page - lv 0
signup page - lv 0
profile page & cat3 - lv 0
├─ wantlist page & cat3 - lv 1
├─ saved_search page & cat3 - lv 1
└─ address page & cat3 - lv 1
logout page - lv 0
mail_verify page - lv 0 (special)
reset_password page - lv 0 (special)
search_user page - lv 0 (special)
public_profile page - lv 0 (special)