...
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:
configAnsichten (CMS)#Ansichten (CMS)#config.json
viewAnsichten (CMS)#Ansichten (CMS)#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"
Codeblock | ||
---|---|---|
| ||
public function tile($viewID) { $paragraph = new FrameworkStyleguide\Entity\FrameworkParagraph(); $paragraph->content = new FrameworkStyleguide\StringSafe('Hello World'); return [ 'paragraph' => $paragraph ]; } |
Deklaration von Container-Engines
Info | ||
---|---|---|
| ||
(brandbox >= 7.0) |
...
...
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:
Codeblock | ||
---|---|---|
| ||
class Engine extends Page\lib\ContainerViewAbstract implements Page\lib\Interfaces\ContainerViewInterface |
config.json
Anker | ||||
---|---|---|---|---|
|
Diese Konfigurationsdatei im JSON-Format vergibt wichtige Parameter für platzierbare Views:
Parameter | Beschreibung | Hinweise |
---|---|---|
coreType | Muss für CMS-Ansichten immer "cms-core" lautet (es gibt auch andere Arten von Ansichten). | |
friendlyName | Der Name der Ansicht ein allen gewünschten Sprachen, wird beim Platzieren im CMS-Designer dargestellt. | |
depends | Die Paketnamen von CMS-Themes, für die die View platzierbar ist. | brandbox >= 6.0 |
context | Der Kontext, in der die View im Designer platzierbar ist: | brandbox >= 7.0 |
extra > cms > isContainer | true, falls die View Kind-Views enthalten kann |
Hier beispielhaft der Inhalt der config.json für "Text / BildContainer":
...
Beispiel: Inhalt der config.json für "
...
Container":
Codeblock |
---|
{ "coreType": "cms-core", "friendlyName": { "de": "TextContainer", / Bild", "en": "Container"Text / Image" }, "depends": ["Theme/DefaultCms"], "context": ["page"], "extra": { "cms": { "section"]isContainer": true } } } |
view.hbs
Anker | ||||
---|---|---|---|---|
|
...
"paragraph" steht in der view.hbs über die serve-Variable zur Verfügung:
Beispiel: view.hbs
Codeblock | ||||
---|---|---|---|---|
| ||||
{{{ compile serve.paragraph }}} |
...
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-Datei | Name der Feature-Methode in der Engine.php |
---|---|
views/my/new/feature/view.hbs | myNewFeature |
views/single/slider/view.hbs | singleSlider |
views/tile/view.hbs | tile |
Abhängigkeitskette für die Zuordnung von Ansichten zu Theme-Paketen
Info | |
---|---|
title | Versionshinweise(brandbox >= 6.0) |
Wie oben beschrieben werden Ansichten über den Parameter "depends" in der config.json zu Theme-Paketen zugeordnet.
...
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
Codeblock |
---|
{ "friendlyName": { "de": "Default Shop Theme", "en": "Default Shop Theme" }, "depends": ["Theme/DefaultCms"] } |
...