Content-Bereiche

    Content-Bereiche sind der zentrale Schlüssel der Bakehouse Drag-and-Drop-Befüllung. Sie erlauben es Redakteur:innen, an ausgewählten Stellen innerhalb des Templates dynamisch mit Content-Elementen den inhaltichen Aufbau des Projekts vorzunehmen.

    Der ViewHelper

    Alle Content-Bereiche werden mit dem bh:tmpl.content-Viewhelper erstellt und dem/der Redakteur:in im eingeloggten Zustand als mit Content-Elementen befüllbare Dropzones dargestellt.

    Zum Content-Bereich-ViewHelper

    Ein Beispiel innerhalb des HTML-Templates kann so aussehen:

    HTML
    ... <header id="Header" class="bh-centered bh-width-max"> <bh:tmpl.content label="Header-Bereich" dropzone="absolute" section="header" type="inherit" /> </header> ... <main id="Content"> <bh:tmpl.content label="Content-Bereich" section="content" type="noinherit" /> </main> ... <address id="Kontakt"> <bh:tmpl.content label="Kontakt-Bereich" section="address" type="inherit" elements-allowed="el-text" /> </address> ...

    Vererbung

    Inhalte von Content-Bereichen können auch vererbt werden. Die in einem Content-Bereich mit dem Attribut type="inherit" abgelegten Content-Elemente werden auf eine hierarisch untergeordnete Seiten übernommen, sofern an dortiger Stelle keine neuen Content-Elemente eingefügt wurden.

    Bindungen

    Mit dem parent-Attribut wird angegeben, ob der Content-Bereich an ein bestimmtes Objekt gebunden wird. Beispiele hierfür sind von den Erweiterungen "News" und "Zimmer & Preise" abhängige Content-Bereiche. Hier ist es oftmals gewünscht, Inhalte nur für den jeweiligen Artikel auszugeben.

    Absolute Dropzones

    Im Normalfall befinden sich die Dropzones relativ positioniert und vertikal orientiert zwischen den einzelnen Content-Elementen. Der Content-Bereich vergrößert sich dynamisch, sobald Elemente hinzugefügt oder verschoben werden. Das Bakehouse bietet die Möglichkeit an, durch das Attribut dropzone="absolute", dieses Verhalten zu ändern und einen horizontal orientierten Aufbau mit Flexbox zu ermöglichen. Für sehr viele Anwendungsfälle stellt dies den bessern Anwendungsfall dar. 

    Labeling

    Um dem Redakteur bei komplexen Templates maximale Übersicht zu garantieren, wird ein Content-Bereich optional mit dem Attribut label="Bezeichnung" gekennzeichnet. Das Label wird während einer Drag-&-Drop-Aktion angezeigt.

    Content-Element-Restriktion

    Mit dem Attribut elements-allowed wird eingegrenzt, welche Content-Elemente innerhalb eines Content-Bereichs erlaubt sind. Die Elemente werde mit dem Attribut name (z. B. el-text) kommagetrennt angeführt. Standardmässig sind in einem Content-Bereich alle Content-Elemente erlaubt.