Concrete5: Entwicklung mit Concrete5: Themen verstehen/erweitern: Themen bestimmen mit "site theme paths.php"

Aus Wikibooks

In Concrete5 wird jede Ansicht auf die ein Benutzer oder Entwickler trifft durch ein bestimmtes Theme gerendert. Dies verhält sich auch für benötigte Concrete5 Seiten, wie login, installation und Dashboard Seiten der Fall: Concrete5 inkludiert zwei Kern Themen, concrete (in Verwendung beim Login und Installations Bild) und dashboard (innerhalb des Dashboards). Diese Dateien können unter "concrete/themes/core/concrete.php" und "concrete/themes/core/dashboard.php" gefunden werden.

Den Einzelseiten, die auf eines dieser Verzeichnisse verweisen, werden diese Themen nicht explizit zugewiesen; stattdessen, wird der Pfad zu diesen Seiten verwendet, um zu bestimmen, welches Theme diese verwenden sollen. Auf diese Weise wird beim Hinzufügen einer neuen Seite im Dashboard Bereich dieser Seite das Dashboard Theme immer automatisch gewählt. Dies geschieht alles innerhalt der "theme_paths.php" Datei, innerhalb von "concrete/config/." Ein Auszug dieser Datei zeigt gut, wie dieser Prozess funktioniert:

$v = View::getInstance();
$v->setThemeByPath('/dashboard', 'dashboard'); 
$v->setThemeByPath('/page_forbidden', VIEW_CORE_THEME);
$v->setThemeByPath('/page_not_found', VIEW_CORE_THEME);
$v->setThemeByPath('/install', VIEW_CORE_THEME);
$v->setThemeByPath('/login', VIEW_CORE_THEME);
$v->setThemeByPath('/register', VIEW_CORE_THEME);

Hier kann man sehen wie diese Routine abläuft. Es wird eine Anzahl von Ansichten in bestimmten Verzeichnissen erfasst, und diesen bestimmte Themen zugewiesen (die VIEWCORETHEME Konstante ist nur eine Platzhalter für "concrete", für den Fall, dass sich der name dieses Theme in Zukunft ändern sollte). Zusätzlich kann man sehen, dass dem Dashboardbereich der Seite das Dashboard Theme zugewiesen wird. Es sind keine Sternchen oder Regular Ausdrücke in den Begriffen erlaubt, momentan - dies ist eine statische Themen Deklaration, die der Seiten/Ansicht an dieser besonderen Stelle hinzugefügt wird, und sich auf ALLE Kindelemente überträgt.

Es ist wahrscheinlich keine gute Idee "concrete/config/themepaths.php" zu modifizieren, um diese Art von Themenzuweisung in einer eigenen Webseite zu verwenden. Dafür steht die Datei "config/sitetheme_paths.php" im Rootverzeichnis zur Verfügung. Diese Datei wird beim Startup automatisch inkludiert und geparst. Momentan ist diese leer, hat jedoch einige Syntaxbeispiele, wie Themen mit Hilfe der "setThemeByPath" Funktion gesetzt werden.