Seiten
Table of Contents
Sämtlicher Inhalt von SetaSite ist auf sogenannten Seiten gespeichert. Die Seiten sind als Baumstruktur abgespeichert. Es gibt drei verschiedene Unterarten von Seiten: Normale Inhaltsseiten, Templateseiten und Controller-Seiten.
Der Inhalt der Seiten kommt aus den hinzugefügten Blöcken und aus dem verwendetem Template.
Templates
Eine Seite in SetaSite basiert immer auf einem Template. Templates sind prinzipiell lediglich HTML-Vorlagen mit einigen benamten Platzhaltern. In diese Platzhalter können später Blöcke eingefügt werden (mehr dazu hier).
Templates können entweder als SetaFramework View geschrieben werden oder als Twig-Template.
Hinweis: für View Platzhalter muss "<?=$this->placeholder['content']?>" verwendet werden und für Twig Platzhalter muss "{{ placeholder('content') }}" verwendet werden. Andere Schreibweisen werden unter Umständen nicht korrekt erkannt.
View Template Beispiel:
<!DOCTYPE html>
<html lang="<?=$this->page->getLanguage()?>">
<head>
<?php
/**
* @var \com\setasign\SetaFramework\View\Helper\HtmlHead $headHelper
*/
$headHelper = $this->htmlHead();
$headHelper->addMeta(['content-type' => 'text/html; charset=utf-8']);
$headHelper->addMeta(['expires' => '-1']);
$headHelper->addCss($this->AbsoluteUri('/styles/default.css', false));
if ($headHelper->getTitle() === null) {
$headHelper->setTitle($this->page->title);
}
echo $headHelper;
?>
<?=$this->jsErrorLogger()?>
</head>
<body>
<div class="header"><?=$placeholder['header']?></div>
<div class="body"><?=$placeholder['body']?></div>
<div class="footer"><?=$placeholder['footer']?></div>
</body>
</html
Twig Template Beispiel:
{# @controller com\setasign\SetaSite\Page\PageRenderer:renderPage #}
<!DOCTYPE html>
<html lang="{{ page.getLanguage() }}">
<head>
{{ htmlHead() }}
</head>
<body>
{{ jsErrorLogger() }}
<h1>Hallo Welt</h1>
<div class="header">{{ placeholder('header') }}</div>
<div class="content">{{ placeholder('content') }}</div>
<div class="footer">{{ placeholder('footer') }}</div>
<!--footer-end-->
</body>
</html>
Inhaltsseiten
Inhaltsseiten besitzen standardmäßig folgende Properties:
- id
- version (0 = Arbeitsversion; 1 = Öffentliche Version)
- language
- parentId (ID der überliegenden Seite)
- path
- pathOrder (Bestimmt die Sortierung für Seiten auf gleicher Ebene)
- title (Titel der Seite)
- description (Beschreibung der Seite)
- template (Vorlage - Mehr dazu unten)
- creationDateTime (Erstellungszeit - kann nicht manuell bearbeitet werden)
- changeDateTime (Bearbeitungszeit - kann nicht manuell bearbeitet werden)
- contextDateTime (Veränderbares Erstellungszeitfeld)
- active (Aktiv? Falls nein - Seite öffentlich nicht verfügbar)
- redirect (Falls gefüllt werden Besucher der Seite auf das Ziel weitergeleitet)
- controller (Falls ja - Seite ist eine Controllerseite)
- custom (Eigene Eigenschaften)
Die Root-Seite wird immer automatisch mit der Installation von SetaSite erstellt mit der ID "1".
Controllerseiten
Controllerseiten sind technisch gesehen lediglich normale Inhaltsseiten, nur dass das "controller"-Flag gesetzt ist. Normaler Weise werden Seiten nur gefunden, wenn der exakte Pfad abgefragt wird. Bei Controllerseiten ist dies etwas aufgeweicht - der Pfad muss lediglich mit dem Pfad der Controllerseiten anfangen und muss nicht vollständig übereinstimmen.
Alles was nach dem Pfad zur Controllerseite kommt wird sämtlichen Controllerblöcken als Parameter hinzugefügt (mehr dazu unter Blöcke > ControllerBlockInterface).
Templateseiten
Templateseiten sind Seiten die nicht allein stehend angezeigt werden können, sondern Vorlagen für andere Seiten sind. Sie besitzen alle Properties von normalen Seiten außer: active, controller und redirect
Eine Templateseite kann niemals eine Templateseite als Template hinterlegt haben, sondern muss immer eine Template-Datei hinterlegt haben. Eine Vererbung von Blöcken ist jedoch über die Baumstruktur möglich.
Templateseiten können nur innerhalb des Pfads "/_$/templates/" existieren. Die Parent ID für Templateseiten ohne parent ist "-2".
In Templateseiten ist es zusätzlich möglich hinzugefügte Blöcke als "final" zu deklarieren, dies geht in vier unterschiedlichen Stufen: no, yes, top und bottom.
Final - no: Dies bedeutet, dass der Block nicht final ist und der Block beim benutzen des Templates nicht automatisch abgeglichen wird, sondern nur beim Erstellen einer Seite oder Templateseite auf Basis einer Templateseite.
Final - yes: Dies bedeutet, dass der Block und alle anderen Blöcke innerhalb dieses Platzhalter automatisch abgeglichen werden von Seiten die diese Templateseite verwenden. Der Platzhalter ist für diese Seiten nicht länger verfügbar und komplett gesperrt.
Final - top: Dies bedeutet, dass der Block und alle Blöcke die sich VOR diesem Block befinden automatisch abgeglichen werden von Seiten die diese Templateseite verwenden. Der Platzhalter ist für diese Seiten weiterhin verfügbar, jedoch kann kein Block davor hinzugefügt werden.
Final - bottom: Das Gleiche wie final-top nur mit dem Unterschied dass dieser Block und alle Blöcke DANACH automatisch abgeglichen werden.
Die Baumstruktur innerhalb des Template-Pfades stellt auch gleichzeitig eine Vererbung der Blöcke dar. Eine Templateseite unterhalb einer anderen Templateseite erbt sämtlich Blöcke von der dadrüber liegenden Seite und falls diese als Final deklariert sind werden diese auch automatisch abgeglichen.
