6.1.2 Inhalte der Dateien

Template-Datei

Die Template-Datei ist eine XML-Datei, die alle Meta-Informationen zu dem Template beinhaltet, außerdem eine Liste der möglichen benutzerdefinierten Inhalte. Diese Inhalte werden in der Layout-Datei referenziert, teilweise auch in Layout-Dateien anderer Templates, die dieses Template als Teil einer Liste enthalten.

Die Template-Datei hat dabei stets einen beispielhaften Aufbau:

<cms_page_template id="example_template" version="2015-02-03">
     <name>Beispiel Template</name>
     <description>Dies ist eine Beschreibung des Templates.</description>
     <icon>cms_template_example.png</icon>
     <html>cms_template_example.xhtml</html>
     <content>
            <item id="A1" label="Überschrift" type="TEXT" mandatory="true" />
            <item id="A2" label="Text" type="HTML" mandatory="true" />
            <item id="image01" label="Bild" type="MEDIA" />
            <item id="queryList01" label="Werke" type="SOLRQUERY" />
            <item id="pageList01" label="News-Einträge" type="PAGELIST" />
            <item id="document" label="Dokument" type="MEDIA" filter=".*(.docx|.rtf|.htm|.html|.xhtml)" />
     </content>
</cms_page_template>

Die einzelnen Elemente im Überblick:

Option

Beschreibung

cms_page_template/id

Ein einzigartiger Identifier-String des Templates, der intern zur Identifikation des Templates verwendet wird

cms_page_template/version

Das Datum der letzten Änderung. Wird vom Goobi viewer Core nicht verwendet sondern dient dem internen Tracking von Änderungen.

name

Der Name des Templates. Dieser wird beim Erstellen neuer Seiten in der Oberfläche angezeigt.

description

Eine Beschreibung des Templates. Diese wird beim Erstellen neuer Seiten in der Oberfläche angezeigt.

icon

Der Dateiname des Icons, das dieses Template beim Erstellen neuer Seiten und beim Bearbeiten vorhandener Seiten repräsentiert; ohne Pfadangabe.

html

Der Dateiname der Layout-Datei für dieses Template; ohne Pfadangabe.

content

Eine Liste von <item>-Elementen. Jedes dieser Elemente bekommt einen eigenen Editorbereich beim Anlegen/Bearbeiten von CMS-Seiten auf Basis dieses Templates. Die Art des Editorbereichs hängt ab von der Art des Items. Jedes Item hat folgende Attribute:

  • id: Ein für dieses Template einzigartiger Identifier-String, mit dem dieser Inhalt in der Layout-Datei referenziert wird.

  • label: Die Bezeichnung dieses Inhaltes im Editorbereich der Seitenbearbeitung.

  • order: Bestimmt die Reihenfolge in der der Anzeige. Muss Zahlen enthalten. Ist das Attribut nicht gesetzt wird nach der ID sortiert.

  • type: Der Inhaltstyp, siehe Kapitel 6.4.3.

  • mandatory: Optionales. Wenn gesetzt und der Wert "true" dann ist das Feld ein Pflichtfeld.

  • filter: Optional. Regulärer Ausdruck (regex), um die Medienauswahl auf bestimmte Dateiendungen zu beschränken.

  • mode: Optional. Schaltet bei bestimmten Inhaltstypen besondere Optionen bei der Seitenerstellung für dieses Item frei. Folgende Modi sind implementiert:

    • simple: Kein besonderes Verhalten. Default-Wert

    • expanded: Nur für Inhaltstyp COLLECTION. Erlaubt erweiterte Einstellungen zur Darstellung der Sammlungsanzeige.

    • paginated: Nur für Inhaltstyp PAGELILST. Erlaubt eine Paginierung der Seitenliste.

Layout-Datei

Die Layout-Datei ist eine XHTML-Datei die das Layout mit JSF beschreibt. Sie ist wie eine übliche Goobi viewer Core Seite aufgebaut, benötigt jedoch für die Anzeige von CMS-Inhalten einige spezielle Annotationen. So muss am Anfang der Seite vor etwaigen CMS-Inhalten die folgende Zeile zwingend existieren:

<ui:param name="cmsPage" value="#{cmsBean.currentPage}" />

Dies setzt den Parameter page, aus dem alle CMS-Inhalte ausgelesen werden. Um einen beliebigen in der Template-Datei definierten Inhalt einzufügen, verwendet man die folgende Notation:

"#{cmsPage.getContent('content01')}"

Dabei stellt content01 die id eines in der Template-Datei definierten Inhaltstyps dar. Der Inhalt wird automatisch je nach Typ eingefügt.

Die Sidebar der Seite muss im Tag <ui:define name=“sidebar“/> definiert werden. Zur Verwendung benutzderdefinierter Sidebars muss sie folgende Form haben:

<ui:define name="sidebar">
      <c:forEach var="element" items="#{cmsBean.getSidebarElements(true)}">
            <widgetComponent:widget_bookshelves widget="#{element}"/>
            <widgetComponent:widget_browsing widget="#{element}"/>
            <widgetComponent:widget_crowdsourcing widget="#{element}"/>
            <widgetComponent:widget_mySearches widget="#{element}"/>
            <widgetComponent:widget_searchField widget="#{element}"/>
            <widgetComponent:widget_user widget="#{element}"/>
            <widgetComponent:widget_custom widget="#{element}"/>
      </c:forEach>
</ui:define>

Jedes möglicherweise vorkommende Sidebar-Widget muss in der Liste als <widgetComponent> enthalten sein; der Name des Widgets muss dabei dem Dateinamen der Widget-Komponente entsprechen. Beispielsweise ruft <widgetComponent:widget_user> das in der Datei /components/widget_user.xhtml definierte Widget auf.

Template-Icon

Hierbei handelt es sich um eine einfache Bilddatei zur Repräsentation des Templates. Das Bild muss quadratische Abmessungen haben. Üblicherweise werden 128x128px große PNG-Dateien verwendet.

Last updated