Wie erstelle ich ein eigenes Layout z.B. nur für die statischen Seiten (Pages)?

Editionen: Light, Community, Professional, Enterprise, Ultimate, Corporate
Versionen: alle

In diesem HowTo ist unser Ziel, die Seiten in ViMP (static pages, im folgenden "pages" genannt) mit einem eigenen Layout zu dekorieren.

In einem solchen Layout kann man z.B. auf die rechte Layout-Spalte mit dem Benutzer-Menü und Suche verzichten.

Eine gute Grundlage für diesen Artikel ist Kapitel 7 "Inside the View Layer" aus der symonfy-Doku "A Gentle Introduction to symfony", die auch online zu lesen ist: http://www.symfony-project.org/gentle-introduction/1_4/en/07-Inside-the-View-Layer 

Wir arbeiten im Text mit dem classic-Template. Es ist grundsätzlich sinnvoll mit einer Template-Kopie zu arbeiten.

Die Datei templates/classic/frontend/layout.php ist die zentrale HTML-Datei, die das Layout auf allen Seiten bestimmt. Diese kopieren wir als Basis für unser Layout (pages):

cp templates/classic/templates/frontend/layout.php templates/classic/templates/frontend/pages.php

Danach müssen wir dem Template noch bekannt geben, dass es ein weiteres Layout gibt. Dazu erweitern wir Zeile 6 in der Datei templates/classic/template.yml:

layouts:        {classic: layout.php, media: media.php, pages: pages.php}

Wie Sie sehen, gab es für das Frontend bereits zwei Layouts, "default" und "media". Wir haben das Template nun um ein drittes Layout "pages" erweitert.

Wir müssen jetzt der Action, die für die Anzeige der Pages verantwortlich ist, noch mitteilen, dass als Layout-Rahmen unsere pages.php verwendet werden soll.

Die entsprechende Methode ist executeView() im Modul "webcontent" der Applikation "frontend" und dort in der Basisklasse vorhanden: apps/frontend/modules/webcontent/actions/base/BaseWebcontentActions.class.php

Da die Basisklasse und damit die Methode bei einem Update überschrieben würde, erweitern wir die Basisklasse und darin auch die Methode executeView().

Die erweiterte Klasse wurde von symfony bereits angelegt in apps/frontend/modules/webcontent/actions/actions.class.php.

Mit der erweiterten Methode soll diese Datei wie folgt aussehen:

<?php
class webcontentActions extends BaseWebcontentActions
{
  public function executeView(){
    parent::executeView();
    $this->setLayout(stTemplates::getLayout('pages'));
  }
}

Wenn Sie nach diesen Änderungen eine statische Seite (Page) aufrufen, wird diese bereits mit unserer neuen pages.php dekoriert. Optisch hat sich allerdings noch nichts geändert.

Um Änderungen am Layout durchzuführen, passen Sie noch die Datei templates/classic/templates/frontend/pages.php an.

Der Inhalt der Pages wird über eine eigene Template-Datei formatiert, diese ist templates/classic/templates/frontend/webcontent/_contentBox.php

Doch Vorsicht beim Ändern der _contentBox.php. Diese Komponente wird auch z.B. auf den Medien-Übersichtsseiten genutzt. Änderungen darin werden das Layout dort auch beeinflussen.

Zuletzt aktualisiert am 10.08.2020 von Admin.

Zurück