Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

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
languagephp
public function tile($viewID)
{
    $paragraph = new FrameworkStyleguide\Entity\FrameworkParagraph();
    $paragraph->content = new FrameworkStyleguide\StringSafe('Hello World');
	return [
       'paragraph' => $paragraph
    ];
}

Deklaration von Container-Engines

Info
titleVersionshinweise

(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
languagephp
class Engine extends Page\lib\ContainerViewAbstract implements Page\lib\Interfaces\ContainerViewInterface

config.json

Anker
config.json
config.json

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:
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

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
view.hbs
view.hbs

...

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

Beispiel: view.hbs
Codeblock
languagexml
titleBeispiel: view.hbs
{{{ 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"]
}

...