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:

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