Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 38 Nächste Version anzeigen »

Ansichten sind Darstellungselemente, die sich auf Seiten platzieren lassen.

Aufbau

Eine Ansicht sollte sich innerhalb der Ordnerstruktur einer App immer im Namespace "View" befinden, bspw. lautet der Ordner für die Ansicht "Text / Bild":

plugin/remote/brandbox/cms-layout-standard/src/View/Tile


Im weiteren Verlauf "Paketordner" genannt.
Unterhalb des Paketordners muss sich eine PHP-Datei "Engine.php" und außerdem ein Ordner "views" befinden. Eine platzierbare Ansicht benötigt dort immer mindestens 2 Dateien:

config.json

view.hbs

Engine.php

Diese Datei liegt direkt im Paketordner und stellt die öffentlichen Endpunkte für die Ansichten bereit. Ein Endpunkt entspricht einer öffentlichen Methode in dieser Datei.

Beispiel: "Text / Bild"
public function tile($viewID)
{
    $paragraph = new FrameworkStyleguide\Entity\FrameworkParagraph();
    $paragraph->content = new FrameworkStyleguide\StringSafe('Hello World');
	return [
       'paragraph' => $paragraph
    ];
}

Deklaration von Container-Engines

Versionshinweise

(brandbox >= 7.0) 

Engines von Views, die andere Views enthalten können, müssen das Interface

Brandbox\CmsCore\Cms\Page\lib\Interfaces\ContainerViewInterface

implementieren, damit im Designer andere Views innerhalb platziert werden können. Hierzu kann die Klasse einfach von Brandbox\CmsCore\Cms\Page\lib\ContainerViewAbstract abgeleitet werden:

class Engine extends Page\lib\ContainerViewAbstract implements Page\lib\Interfaces\ContainerViewInterface

config.json

Diese Konfigurationsdatei im JSON-Format vergibt wichtige Parameter für platzierbare Views:

ParameterBeschreibungHinweise
coreTypeMuss für CMS-Ansichten immer "cms-core" lautet (es gibt auch andere Arten von Ansichten).
friendlyNameDer Name der Ansicht ein allen gewünschten Sprachen, wird beim Platzieren im CMS-Designer dargestellt.
dependsDie Paketnamen von CMS-Themes, für die die View platzierbar ist.brandbox >= 6.0
contextDer Kontext, in der die View im Designer platzierbar ist:
page: Die View kann direkt innerhalb des Hauptbereichs der Seite platziert werden (blau)
section: Die View kann in einer Spalte platziert werden (grün)
container: Die View kann innerhalb einer anderen Container-View platziert werden (schwarz)
brandbox >= 7.0

Hier beispielhaft der Inhalt der config.json für "Text / Bild":

Beispiel: Inhalt der config.json für "Text / Bild":
{
  "coreType": "cms-core",
  "friendlyName": {
    "de": "Text / Bild",
    "en": "Text / Image"
  },
  "depends": ["Theme/DefaultCms"],
  "context": ["page", "section"]  
}

view.hbs

Diese Datei regelt den HTML-Inhalt der Ansicht. In ihr können Partial-Calls aus dem verwendeten Styleguide platziert werden.
Außerdem können Styleguide-Elemente, die in einem zugehörigen öffentlichen Endpunkt in der Engine.php (siehe oben) aufgebaut wurden, platziert werden. Dieser Endpunkt wird beim Aufbau der Seite, auf der die Ansicht platziert wurde, automatisch aufgerufen.
Der Endpunkt ist eine öffentliche PHP-Methode mit dem Endpunkt-Namen als Methode und muss einen Array mit benamten Array-Keys zurückgeben, denen Styleguide-Elemente zugeordnet werden:

Am Beispiel "Text / Bild" (vgl. oben Engine.php):

"paragraph" steht in der view.hbs über die serve-Variable zur Verfügung:

Beispiel: view.hbs
{{{ compile serve.paragraph }}}

Für Container-Views muss die mögliche Schachtelung von untergeordneten Inhalten deklariert werden, am Beispiel des Container-Views:

{{#> cms-row this class=serve.class }}
  {{{section "main" parent}}}	// brandbox <= 6.0
  {{{views parent}}} 			// brandbox >= 6.0
{{/cms-row}}

Ermittlung des Endpunkt-Namens

config.json-Dateien für Ansichten werden in bis zu 3 Ordnerebenen unter dem Ordner "views" gefunden. Der Feature-Name ergibt sich aus dem Namen der Ordner im CamelCase-Style.

Beispiele:

Pfad zur hbs-DateiName der Feature-Methode in der Engine.php
views/my/new/feature/view.hbsmyNewFeature
views/single/slider/view.hbssingleSlider
views/tile/view.hbstile

Abhängigkeitskette für die Zuordnung von Ansichten zu Theme-Paketen

Versionshinweise

(brandbox >= 6.0) 

Wie oben beschrieben werden Ansichten über den Parameter "depends" in der config.json zu Theme-Paketen zugeordnet.

Das Theme-Paket einer Seite ergibt sich aus dem dort gepflegten Template.

Nicht jede Ansicht ist mit jedem Theme-Paket kompatibel. Um zu verhindern, dass nicht kompatible Ansichten im CMS-Designer platziert werden, werden nur kompatible Ansichten zum Platzieren angeboten.
Die Kompatibilität zu einem Theme-Paket wird über den Parameter "depends" in der config.json ausgedrückt. Es ist allerdings auch möglich, ein Theme-Paket in Abhängigkeit zu einem anderen zu setzen. In diesem Fall werden die aus dieser Abhängigkeit resultierenden Ansichten als kompatibel betrachtet.

Diese Logik findet Verwendung beim Theme-Paket "Theme/DefaultShop". Dort wird in der config.json des Pakets eine Abhängigkeit zu Theme/DefaultCms definiert. Damit sind auf einer Seite, die ein Template von Theme/DefaultShop verwendet, auch alle Ansichten platzierbar, die über den Parameter "depends" in der config.json der Ansicht dem Theme-Paket "Theme/DefaultCms" zugeordnet sind.

config.json des Theme-Pakets Theme/DefaultShop
{
  "friendlyName": {
    "de": "Default Shop Theme",
    "en": "Default Shop Theme"
   },
  "depends": ["Theme/DefaultCms"]
}

Wird bei einer Seite also ein Template des Theme-Pakets "Theme/DefaultShop" verwendet, sind auf dieser Seite alle Ansichten platzierbar, die über "depends" für Theme/DefaultShop und Theme/DefaultCms freigegeben sind.

  • Keine Stichwörter