Versionen im Vergleich

Schlüssel

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

(brandbox >= 7.0) 

Ansichten sind Darstellungselemente, die sich auf Seiten platzieren lassen.

...

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
    ];
}

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

...

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": "Container"Text,
  / 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 }{{{ compile serve.paragraph }}}

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

Codeblock
languagexml
{{#> 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"]
}

...