...
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 ]; } |
...
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": "Container"Text, / Bild", "en": "Container"Text / Image" }, "depends": ["Theme/DefaultCms"], "context": ["Theme/DefaultCmspage"], "extra": { "cms": { "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 }}}{{{ compile serve.paragraph }}} |
Für Container-Views muss die mögliche Schachtelung von untergeordneten Inhalten deklariert werden, am Beispiel des Container-Views:
Codeblock | ||
---|---|---|
| ||
{{#> 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-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 |
---|
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"] } |
...