Das HTML Seiten-Template (standard.wDocument.php)

Weblication® Inhaltsseiten verwenden ein zentrales HTML Seiten-Template, um die in der Inhaltsdatei vorhandenen XML-Inhalte in XHTML bzw. HTML 5 zu transformieren und auszugeben. In der BASE wird hierzu auf ein zentrales XSL-Stylesheet zurückgegriffen, das HTML Seiten-Template standard.wDocument.php.

Pfad des Standard-XSL-Stylesheets:
/IhrGlobalesProjekt/wGlobal/layout/templates/standard.wDocument.php

Die Zuweisung des Stylesheets wird im wd:extension-Bereich jeder Seite vorgenommen und kann ebenfalls in den Eigenschaften der Datei eingestellt werden.
In der BASE wird die Angabe des HTML Seiten-Templates in den meisten Dateien durch Vererbung vorgenommen. Die Wahl dieses XSL-Darstellungstemplates kann nur durch Administratoren verändert werden.

Weitere Hinweise finden Sie hier
Dateioptionen - Die Dokumentenerweiterung (wd:extension)

Einführung

Die XSL-Transformation stellt im XSLT-Stylesheet sogenannte Schablonen (templates) zur Verfügung, welche die Transformationsanweisungen und den resultierenden XHTML-Code beinhalten. Dabei werden diese Schablonen auf die im XML-Dokument verfügbaren XML-Elemente angewendet und der entsprechende XHTML-Code für die Ausgabe erzeugt.

Das resultierende XHTML-Dokument ist in der Regel in mehrere Bereiche aufgeteilt, von denen das Standard-Stylesheet nur den Basisaufbau (das XHTML-Grundgerüst) erzeugt:

 
 

Basisaufbau des HTML Seiten-Templates (Grundgerüst)

Systematischer Aufbau des Standard-XSL-Stylesheets

<?php $version="1.0"; $encoding="UTF-8"; ?>
<?php exit; ?>
<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xslIfIsInEditor="http://www.w3.org/1999/XSL/TransformIfIsInEditor" xmlns:wslPre="http://weblication.de/5.0/wsl" xmlns:wslPost="http://weblication.de/5.0/wsl" xmlns:wslEditorPre="http://weblication.de/5.0/wsl" xmlns:wsl="http://weblication.de/5.0/wsl" xmlns:wd="http://weblication.de/5.0/wd" xmlns:php="http://php.net/xsl" exclude-result-prefixes="xslIfIsInEditor wd wslPre wsl php" version="1.0">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="no" encoding="UTF-8"/>

  <!-- INCLUDES DER BENOETIGTEN STYLESHEETS -->
  <!-- z.B.: -->
  <!-- System-Parameter einbinden -->
  <xsl:include href="$XSLTPRE[wDocumentRoot]/deGlobal/wGlobal/layout/templates/misc/standard.wParams.php" wd:pathTemplate="misc/includes.global.php"/>
  
  <!-- ... -->
  
  <!-- Definition der Darstellung -->
  <xsl:template match="/wd:document">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
      <head>
        <!-- HTML-Kopf -->
        <xsl:call-template name="htmlHeader" wd:pathTemplate="misc/includes.global.php#htmlHeader"/>
      </head>
      <body>
        <!-- Maske zur Pflege der Metadaten einbinden, falls man sich im Editor befindet -->
        <xslIfIsInEditor:call-template name="templateEditor" wd:pathTemplate="editmasks/standard.metadata.php"/>

        <!-- AUFBAU DES HTML GRUNDGERUESTES -->
        <div id="blockMainOuter">
          <div id="blockMain">
            <div id="blockMainInner">
            
            <!-- ... -->
            
            <!-- EINBINDEN DER OBJEKT- UND INHALTSBEREICHE UEBER xsl:call-template -->
                  <!-- Inhaltegruppe 1 (content1) des Objektes (der Seite)-->
                  <xsl:call-template name="content1" wd:pathTemplate="misc/includes.global.php#content1"/>   
            <!-- ... -->

            </div>
          </div>
        </div>

        <!-- ... -->

      </body>
    </html>
  </xsl:template>

</xsl:stylesheet> 

Einbinden der benötigten Stylesheets für die Transformation
Die meisten zentralen Funktionen und Elemente werden in einzelnen Dateien ausgelagert und von der standard.wDocument.php beim Aufruf includiert. Hierzu zählen beispielsweise die Pflegemaske für Metadaten, Systemparameter etc.).

Kopfbereich
Der Kopfbereich enthält die HTML-Ausgabe für alle Elemente, die im <head> Bereich der HTML-Seite ausgegeben werden sollen (Metatags, Verweise zu CSS-Stylesheets, etc)

Objekte und Inhaltsbereiche ueber includes
Sowohl Objektdaten als auch die Inhalte der wd:group-Inhaltsbereiche werden über spezielle XSL-Stylesheets transformiert. Weitere Informationen siehe weiter unten.

Seitenbasiselemente
Dies sind Elemente, die in vielen Webseiten standardmäßig verwendet werden sollen, beispielsweise eine Meta- oder Servicenavigation, die Sprachwahl oder Suche.

Systembereiche ueber includes
Dies betrifft Elemente wie das Weblication® Panel, die Bearbeitenbuttons etc. 

Eine detailliertere Beschreibung aller Bereiche folgt weiter unten auf dieser Seite

 
 

Einbinden der benötigten Stylesheets für die Transformation

Innerhalb des XSL-Stylesheets wird auf diverse Funktionen zugegriffen:

Systemparameter (misc/standard.wParams.php)
Hier werden alle Systemparameter definiert und stehen danach im XSL-Stylesheet und allen eingebundenen Stylesheets zur Verfügung. Weitere Informationen: Systemparameter

Zentrale Funktionen, Templates und Scripte (misc/includes.global.php)
Die Datei includes.global.php beinhaltet die meisten XSL-Templates, welche im Standard-Stylesheet mittels call-template aufgerufen werden. Folgende Funktionen sind in dieser Datei enthalten:

htmlHeader
HTML-Kopfbereich (Title-Tag, Meta-Tags, Verweise auf CSS-Stylesheets und JS-Dateien)

languageSelector
Sprachwahl bei Nutzung des Sprachmanagements

navigationMeta
Aufruf der Metanavigation

editButtonNavigationMeta
Generiert den Browse & Edit Button zur Bearbeitung der Metanavigation

searchBox
Suche

navigationTop
Hauptnavigation oben

editButtonsPage
Generiert die Browse & Edit Buttons zur Bearbeitung der aktuellen Seite

content3Include
Includiert den Seitenbereich Content3 aus einer externen Datei

content3
Beinhaltet den Aufruf für die Inhaltsgruppe mit der ID content3

editButtonNavigationMain
Generiert den Browse & Edit Button zur Bearbeitung der Hauptnavigation

navigationLeft
Hauptnavigation links

navigationBreadcrumb
Breadcrumbnavigation

workflowBox
Erzeugt den Bereich, in dem der aktuelle Workflow angezeigt und verwendet werden kann

content1
Beinhaltet den Aufruf für die Inhaltsgruppe mit der ID content1

content2Include
Includiert den Seitenbereich Content2 aus einer externen Datei

content2
Beinhaltet den Aufruf für die Inhaltsgruppe mit der ID content2

editButtonBottom
Generiert den Browse & Edit Button zur Bearbeitung des includierten unteren Bereichs

includeBottom
Includiert den unteren Seitenbereich aus einer externen Datei

weblicationPanel
Generiert das Browse & Edit Weblication® Panel

trackingCodes
Integriert Analytic Codes

template-match Elemente zum Aufruf der Inhaltsgruppen
Diese beinhalten jeweils den Aufruf der Inhaltsgruppen der ID content1, content2 und content3


Dynamische Includes von Objekt-Templates
Includiert dynamisch alle XSL-Stylesheets für Objekte

Dynamische Includes von Element-Templates
Includiert automatisch alle XSL-Stylesheets für Strukturelemente

Metadaten-Pflegemaske (editmasks/standard.metadata.php)
Includiert die Metadaten-Pflegemaske

Einbinden der benötigten Stylesheets für die Transformation

  <!-- System-Parameter einbinden -->
  <xsl:include href="$XSLTPRE[wDocumentRoot]/deGlobal/wGlobal/layout/templates/misc/standard.wParams.php" wd:pathTemplate="misc/includes.global.php"/>

  <!-- Zentrale Funktionen, Templates und Skripte einbinden - -->
  <xsl:include href="$XSLTPRE[wDocumentRoot]/deGlobal/wGlobal/layout/templates/misc/includes.global.php" wd:pathTemplate="misc/includes.global.php"/>

  <!-- Objekte-Templates dynamisch einbinden - Eine Seite ist von einem bestimmten Objekttyp -->
  <wslPre:includeXsltObjectsProject project="/deGlobal" useIndex="0"/>

  <!-- Elemente-Templates dynamisch einbinden - Eine Seite beinhaltet beliebig viele, vom Redakteur eingefügte, Elemente -->
  <wslPre:includeXsltItemsProject project="/deGlobal" useIndex="0"/>

  <!-- Meta-Maske einbinden - Falls die Seite im Editor aufgerufen wird -->
  <xslIfIsInEditor:include href="$XSLTPRE[wDocumentRoot]/deGlobal/wGlobal/layout/templates/editmasks/standard.metadata.php" wd:pathTemplate="editmasks/standard.metadata.php"/>
 
 

Der Kopfbereich

Im Kopfbereich des XSL-Stylesheets wird der HTML-Header generiert.

Hierzu wird das im vorigen Schritt includierte XSL-Element mit dem Namen "htmlHeader" aufgerufen:

 

Kopfbereich

  <!-- Definition der Darstellung -->
  <xsl:template match="/wd:document">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
      <head>                  
        <!-- HTML-Kopf -->
        <xsl:call-template name="htmlHeader"/>
      </head> 
      <body>      
        <!-- Maske zur Pflege der Metadaten einbinden, falls man sich im Editor befindet -->
        <xslIfIsInEditor:call-template name="templateEditor"/>
 
 

Objekte und Inhaltsbereiche

Der eigentliche und in der HTML-Seite anzuzeigende Inhalt des XML-Dokuments befindet sich wahlweise in den Objektdaten oder im Inhaltsbereich der Seite (oder in beiden parallel). In beiden Fällen wird der Inhalt  über einen xsl:apply-templates in der Seite ausgegeben.

Dies betrifft in der Regel folgende Bereiche:

  • Objektdaten
  • Die Inhaltsbereiche content1 (Hauptinhaltsbereich), content2 und content3 (Seitenbereiche)

Dabei folgt die Transformation einer festgelegten Abfolge:

Zuerst wird auf den in der Seite vorhandenen wd:object-Bereich zugegriffen. Der erste Aufruf der Inhaltsbereiche erfolgt IMMER über das wd:object, dies bedeutet auch, dass dies zwingend in jeder zu transformierenden Seite vorhanden sein muss.

Im XSL-Stylesheet für Objektdaten (objects/*.wObject.php) wird dann zuerst der Inhalt des Objektes transformiert, danach über einen xsl-apply-templates Befehl der eigentliche Inhaltsbereich.

Falls dem Objekt im XML der Seite kein Attribut type mitgegeben wurde, wird das Standard-Objekt-Stylesheet verwendet, welches direkt auf den Inhaltsbereich führt.

Aufruf der Objekte und Inhaltselemente in includes.global.php

<?php

// ZUERST WIRD GENERELL AUF DAS WD:OBJECT DER SEITE ZUGEGRIFFEN
  
<!-- Inhaltsgruppe 1 (content1): Hier wird der Hauptinhalt eingebunden -->
  <
xsl:template name="content1">
    <
xsl:comment>CONTENT:START</xsl:comment>                   
      <
xsl:apply-templates select="/wd:document/wd:extension/wd:object"/>
    <
xsl:comment>CONTENT:STOP</xsl:comment>  
  </
xsl:template>

?>

Zugriff auf den Inhaltsbereich in der standard.wObject.php

<?php

// DANACH WIRD NACH TRANSFORMATION DER OBJEKT-DATEN DER INHALTSBEREICH 
// REFERENZIERT UND SCHLIESSLICH TRANSFORMIERT
  
<xsl:template match="wd:object">
    <
xsl:choose>
      <
xsl:when test="$wIsInEditor">
        <
xsl:apply-templates select="/wd:document/wd:group[@id='content1']"/>  
      </
xsl:when>
      <
xsl:otherwise>
        <
xsl:apply-templates select="/wd:document/wd:group[@id='content1']"/> 
      </
xsl:otherwise>
    </
xsl:choose>
  </
xsl:template>

?>

Die zugehörigen Schablonen für die Inhaltselemente befinden sich in den zugehörigen Element-Stylesheets:
XSL-Stylesheets für Strukturelemente

 
 

Systembereiche

Browse & Edit Buttons zur Seitenbearbeitung (misc/includes.global.php)
Erzeugt mittels eines WSL-Tags den entsprechenden Bearbeitenbutton
Siehe Dokumentation wsl-Tags

Browse & Edit Panel (misc/includes.global.php)
Erzeugt mittels eines WSL-Tags das Weblication® Panel
Siehe Dokumentation wsl-Tags

Systemparameter (misc/includes.global.php)
Siehe Systemparameter

Pflegemaske fuer Metadaten(editmasks/standard.metadata.php)
Siehe Pflegemasken für Metadaten

Workflow (misc/includes.global.php)
Erzeugt einen Bereich in der Seite, in dem die Workflowfunktionen zur Freigabe und Zurückweisung der Datei im Workflow angezeigt werden

Trackingcodes (misc/includes.global.php)
Bindet den Trackingcode für Web-Analytics Software ein

 
 

Besonderheiten

Neben Standard-XSL-Elementen kommen bei der Transformation auch spezielle, Weblication-eigene Elemente zum Einsatz. Diese sind im einzelnen:

wslPre:includeXsltObjectsProject
wslPre:includeXsltItemsProject
xslIfIsInEditor:*
wsl:includeCssItemsProject
wsl:includeJsItemsProject


Eine ausführliche Dokumentation dieser Elemente finden Sie hier:

WSL-Tagreferenz

Entwicklerbereich Weblication® CMS - © Scholl Communications AG