0 follower

Motive

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 Wert null 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'