Labels
Aktueller Stand des Label-Systems für UI-Texte und Navigation.
Zweck
Das Label-System liefert sprachabhängige UI-Texte für Seiten und Navigation. Es trennt Interface-Texte vom View-Code, ist aber im aktuellen Projekt kein eigenständiger label.service mit statischem Helper aus der alten Doku.
Aktuelle Bausteine
- app/model/label.model.php enthält die Ladefunktionen getLabel() und getLabels().
- app/core/app.php speichert Seitenlabels und Navigationslabels zentral in cApp.
- Die eigentliche Exportquelle für Mehrfachabfragen ist vw_label_export.
- Views nutzen je nach Stelle entweder cApp::getInstance()->getLabel(...) oder das übergebene $labels-Array.
Laden in der App
public function setLabels(): void {
$this->labels = getLabels(cSession::getLangID(), cSession::getPageID(), cSession::getCatKey(), true);
}
public function setNavLabels(): void {
$this->navLabels = getLabels(cSession::getLangID(), null, 'nav');
}Filterlogik heute
getLabels() kombiniert die aktuelle Sprache mit optionalen Filtern für Seite, Gruppe und Global-Status.
- Seite: über pag_IDs mit FIND_IN_SET(:pagID, pag_IDs)
- Gruppe: über lky_group LIKE '%-tag-%'
- Global: über lky_is_global
Die alte Doku mit p_{page_key}-Gruppen beschreibt also eher eine Zielidee als den heutigen exakten Stand.
Abfrage-Kern (vereinfacht)
SELECT DISTINCT lky_key, label_value
FROM vw_label_export
WHERE lan_ID = :lanID
AND (...)
ORDER BY lky_key ASCFehlerverhalten
cApp::getLabel() und cApp::getNavLabel() greifen strikt zu. Fehlt ein Key, wird ein Fehler geloggt und als Fallback der Text Label error: <key> zurückgegeben. Das ist bewusst sichtbar und nicht still.
Wichtige Einordnung
Inhaltsdaten wie Kategorienamen, Produktnamen oder Artikeltexte gehören nicht in dieses Label-System. Es ist für Interface-Texte gedacht, nicht für den eigentlichen Handelskatalog.