So setzen Sie ein Element mit unterschiedlichen Darstellungsarten um

Dieser Artikel beschreibt, wie Sie ein Strukturelement umsetzen, das mit unterschiedlichen Darstellungen ausgegeben werden soll.

In der BASE Projektbasis liefern wir diverse Elemente mit, bei denen die Ausgabe über die Bearbeitung definiert werden kann. Am Beispiel des Strukturelementes "container.box" zeigt Ihnen dieser Artikel, wie dies in älteren Projekten umgesetzt ist (aktuelle Projekte nutzen zudem die Definition der Klassen über die Projektkonfiguration).

Innerhalb der Bearbeitung ermöglichen Sie dem Benutzer die Auswahl der verschiedenen Darstellungsarten. Dies definieren Sie über eine Auswahlbox (Texteditor mit editor="select"). Dieser Auswahlbox geben Sie die gewünschten Werte mit. Im Beispiel (siehe unten) wird dies über Variablen eingelesen, die in den beiden Zeilen oberhalb des Text-Pflegekommentares definiert sind.
Eingepflegt wird dieser Wert in das Fragment mit der id='display'.

Für die Ausgabe des Inhaltscontainers wird auf den display-Wert zurückgegriffen. Abhängig davon wird dem DIV-Container über xsl:attribute eine andere Klasse zugewiesen (zusammengesetzt über das Prefix "elementBox" und dem eingepflegten Wert (ergibt z.B. "elementBoxSheet"). Diese Klasse definieren Sie in der verwendeten CSS-Datei (meist design.css). Dort können Sie z.B. eine Hintergrundfarbe, Hintergrundbild, einen Rahmen oder dergleichen für die Ausgabe definieren.

Beispiel: Inhalt der /[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/items/container.box.wItem.php

<?php $version="1.0"; $encoding="UTF-8"; ?>
<?php exit; ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 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="wd wsl php" version="1.0">
<!-- Source: base.standard, 001.000.318.000 (2011-12-21 10:30:18)-->

<wd:extension type="weblication" version="5.0" uid="8749dcd97cb5e8bd4e4432f2990cb192">
  <wd:meta>
    <wd:title>Inhaltsbox</wd:title>
    <wd:description/>
    <wd:modification name="admin" time="1292234420"/>
    <wd:creation name="admin" time="1252018717"/>
    <wd:icon src="/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/images/element-icons/element_box.gif"/>
  </wd:meta>
  <wd:status>
    <wd:online from="" status="on" to=""/>
    <wd:type value=""/>
  </wd:status>
  <wd:version value="17"/>
    <wd:cache expires="{wGetValueOfDefaultExtension()}"/>
  </wd:extension>
        
  <xsl:template match="wd:item[@type = 'container.box']">
    <!-- web:item:start name="Inhaltsbox (mit weiteren Elementen befüllbar)" en:name="Box to include further elements" iconStyle="" display="user" pathEditMastertemplate="/[IHR-LAYOUT-PROJEKT]/wGlobal/mastertemplates/items/container.box.wItemMastertemplate.php" pathEditXslt="/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/items/container.box.wItem.php" type="container.box"-->
    
    <xsl:if test="$wIsInEditor and @wEditorId">
      <div id="wConfigMask_{@wEditorId}" class="wEditorStructureElementConfigurationSmart">
        <xsl:if test="php:functionString('wRequest::getCookie', 'showStructureEditor') = '0'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if>
        <!-- 
          Weitere individuelle auswählbare Klassen können über die zwei folgenden Variablen definiert werden. 
          Die in der Webseite ausgegebene Klasse setzt sich aus elementBox + der ausgewählten Variable $selectableClasses zusammen, also z.B. class="elementBoxSheet"
          Der Redakteur sieht alle in der Variable $selectableCaptions angegebenen Werte in seiner Sprache zur Auswahl
        -->
        <xsl:variable name="selectableClasses">Sheet|Blank</xsl:variable>
        <xsl:variable name="selectableCaptions"><xsl:value-of select="php:functionString('wTexts::showTextUser', 'Sheet', 'Box', 'Champs de saisie')"/>|<xsl:value-of select="php:functionString('wTexts::showTextUser', 'Default', 'Neutral', 'Défaut')"/></xsl:variable>        
        <!--web:text:start editor="select" onchange="wEditor.saveDraftAndReload()" values="<xsl:value-of select="$selectableClasses" />" texts="<xsl:value-of select="$selectableCaptions" />" styles="" inputStyle="float:right;width:auto;background-color:#EBEBEB"--><xsl:value-of select="wd:fragment[@id = 'display']/text()"/><!--web:text:stop-->
        <div class="wEditorElementHeadline"><xsl:value-of select="php:functionString('wTexts::showTextUser', 'Box', 'Inhaltsbox', 'Champs de saisie contenu')"/></div>   
      </div>                          
    </xsl:if>       
    
    <div>                     
      <xsl:attribute name="class">elementBox<xsl:value-of select="php:functionString('ucfirst', wd:fragment[@id = 'display']/text())" /></xsl:attribute>         
      <xsl:apply-templates select="wd:group[@id = 'box']"/>
    </div>      
    <!-- web:item:stop -->
  </xsl:template>
  
  <xsl:template match="wd:group[@id='box']">
    <!-- web:group:start itemsInclude="" itemsExclude="container.standard|container.box" name="<xsl:value-of select="ancestor::wd:group/@id"/>" display="user"-->
      <xsl:apply-templates select="wd:item[php:function('wOutput::isViewableItem', ., $wViewMode)]"/>
    <!-- web:group:stop -->
  </xsl:template>   
  
</xsl:stylesheet>