Motive (engl.: themes) stellen eine Methode dar, das Aussehen einer Webseite systematisch anzupassen. Durch das Anwenden eines Motivs kann man das komplette Erscheinungsbild einer Webanwendung praktisch auf Knopfdruck grundlegend verändern.
Jedes Motiv wird in Yii von einem Verzeichnis dargestellt, das View-, Layout-
und andere relevante Ressourcedateien, wie Bilder, CSS- und Javascript-Dateien
enthält. Der Name eines Motivs entspricht dem Verzeichnisnamen. Alle Motive
befinden sich unterhalb von WebRoot/themes
. Es kann jeweils immer nur ein Motiv
aktiv sein.
Tipp: Das Standardverzeichnis für Motive kann auch an einem anderen Ort als
WebRoot/themes
liegen. Konfigurieren Sie dazu einfach die beiden Eigenschaften basePath (Basispfad) und baseUrl (Basis-URL) der themeManager-Anwendungskomponente.
Setzen Sie die Eigenschaft theme der Webanwendung auf den Namen des gewünschten Motivs, um ein Motiv anzuwenden. Dies kann entweder in der Anwendungskonfiguration oder während der Laufzeit in einer Controller-Action geschehen.
Hinweis: Beim Namen eines Motivs spielt die Groß-/Kleinschreibung eine Rolle. Wenn Sie versuchen, ein Motiv anzuwenden, das es gar nicht gibt, liefert
Yii::app()->theme
den Wertnull
zurück.
Die Inhalte eines Motivverzeichnisses sollten genau wie im Stammverzeichnis
der Anwendung
abgelegt werden. Alle View-Dateien müssen sich zum Beispiel in views
,
Layout-Dateien in views/layout
und System-View-Dateien unter views/system
befinden. Wenn wir z.B. den View create
für PostController
durch einen
View des Themes classic
ersetzen möchten, sollten wir die neue Datei unter
WebRoot/themes/classic/views/post/create.php
ablegen.
Für die View-Dateien eines Controllers, der in einem
Modul enthalten ist, sollte die entsprechende
View-Datei des Motivs ebenfalls unterhalb des views
-Verzeichnisses abgelegt
werden. Wenn der genannte PostController
zum Beispiel in einem Modul namens
forum
enthalten ist, sollten wir die View-Datei für create
unter
WebRoot/themes/classic/views/forum/post/create.php
abspeichern. Falls das
forum
-Modul selbst wiederum als verschachteltes Modul in einem Modul namens
support
enthalten ist, sollte die View-Datei unter
WebRoot/themes/classic/views/support/forum/post/create.php
liegen.
Hinweis: Da das
views
-Verzeichnis sicherheitskritische Daten enthalten könnte, sollten Sie dafür sorgen, dass es nicht vom Web aus zugänglich ist.
Wenn wir render oder renderPartial zum Anzeigen eines Views aufrufen, werden die entsprechenden View- und Layout-Dateien im Verzeichnis des gerade aktiven Motivs gesucht und, falls dort vorgefunden, zum Rendern verwendet. Andernfalls werden sie an den Standardorten gesucht, wie mit viewPath und layoutPath vorgegeben.
Tipp: Innerhalb eines Motiv-Views müssen wir evtl. öfter auf andere Ressource-Dateien des Motivs verlinken. Zum Beispiel könnten wir eine Bilddatei im Ordner
images
des Motivs anzeigen wollen. Mit Hilfe der Eigenschaft baseUrl des aktuellen Motivs können wir die Bild-URL wie folgt zusammenbauen:Yii::app()->theme->baseUrl . '/images/BildName.gif'
Signup or Login in order to comment.