Einfügen von Struktur-Elementen einschränken bzw. erlauben

22. Apr 2014

Die Auswahl an Strukturelementen über das Modul Struktureditor können Sie individuell beeinflussen.

Sie wollen den Pflegebenutzern in bestimmten Bereichen nur konkrete Strukturelemente in der Auswahl zur Verfügung stellen?

Für das Ausblenden bzw. Anzeigen von Elementen in der Struktureditor-Auswahl stehen Ihnen mehrere Möglichkeiten bereit, die Sie nachfolgend beschrieben finden.

1) Struktur-Elemente über Gruppen einschränken / erlauben

Anhand der BASE Projektbasis zeigen wir Ihnen ein Beispiel, wie Sie für die Fusszeile (content5) nur das Fließtext-Element (text.wysiwyg) zur Auswahl bereitstellen.

Innerhalb des Pflegekommentares für Inhaltsgruppen können Sie über das Attribut "itemsExclude" definieren, welche Strukturelemente in der Auswahl des Struktureditors in dieser Gruppe ausgeblendet - also nicht zur Verfügung gestellt - werden sollen.
Ebenso können Sie eine Inhaltsgruppe über das Attribut "itemsExclude" auch so definieren, dass von allen verfügbaren Strukturelementen konkrete Elemente ausgeschlossen werden.
Wenn Sie den anderen Weg über das Attribut "itemsInclude" gehen,  können Sie definieren, auf welche Strukturelemente sich die Auswahl des Struktureditors in dieser Gruppe beschränken soll.

Im Beispiel 1.2 wird über "itemsInclude" für die Fußzeile nur das Fließtext-Element zur Verfügung gestellt.

Beispiel 1.1: Auszug aus /IhrGlobalesProjekt/wGlobal/layout/templates/misc/includes.global.php zu content5 (Standard-Auslieferung)

...
  <!-- Hier werden die Inhaltselemente der Gruppe 5 eingebunden -->
  <xsl:template match="wd:group[@id='content5']" wChecksum="39b4d3731bf8664f0d895dc05944f046">
    <xsl:variable name="itemsExclude"><xsl:if test="document(concat($wDocumentRoot, $wDocumentPath))/wd:document/wd:extension/wd:object/@type != 'global'">content.includeContentNavigation|content.includeContentCurrentPage</xsl:if></xsl:variable>
    <!-- web:group:start name="content5" caption="Element dem unteren Bereich hinzufügen" display="user" itemsExclude="<xsl:value-of select="$itemsExclude" />"-->
    <xsl:apply-templates select="wd:item[php:function('wOutput::isViewableItem', ., $wViewMode)]"/>
    <!-- web:group:stop -->
  </xsl:template>
...

Beispiel 1.2: Auszug aus /IhrGlobalesProjekt/wGlobal/layout/templates/misc/includes.global.php zu content5 (nur Fließtext-Element)

...
  <!-- Hier werden die Inhaltselemente der Gruppe 5 eingebunden -->
  <template match="wd:group[@id='content5']" wChecksum="39b4d3731bf8664f0d895dc05944f046">
    <xsl:variable name="itemsInclude">text.wysiwyg</xsl:variable>
    <!-- web:group:start name="content5" caption="" display="user" itemsInclude="<xsl:value-of select="$itemsInclude" />" -->
    <apply-templates select="wd:item[php:function('wOutput::isViewableItem', ., $wViewMode)]"/>
    <!-- web:group:stop -->
  </template>
...

Der Struktureditor stellt dem Benutzer somit nur das Fließtext-Element zur Verfügung:

Struktureditor - Elementeauswahl auf Fliesstext-Element beschränkt
Struktureditor - Elementeauswahl auf Fliesstext-Element beschränkt

2) Struktur-Elemente über das Mastertemplate einschränken / erlauben

Eine andere Möglichkeit, um bei der Auswahl im Struktureditor bestimmte Elemente zu erlauben oder zu begrenzen, ist die Angabe im Mastertemplate-Element.

Dies ist in der BASE und dem Element "Inhalte der aktuellen Seite einbinden" umgesetzt. Im Standard wird das Element so ausgeliefert, daß dieses nur in den Inhaltsbereichen (content1 - content6) eingefügt werden kann, nicht aber in z.B. Containern (da nicht als wd:contentGroup definiert). Gelöst ist dies über den  wd:mastertemplate  Bereich des zugehörigen Mastertemplate-Elements:

Beispiel: Auszug aus /IhrGlobalesProjekt/wGlobal/mastertemplates/items/content.includeContentCurrentPage.wItemMastertemplate.php

...
    <mastertemplate>
      <contentGroup name="content1"/>
      <contentGroup name="content2"/>
      <contentGroup name="content3"/>
      <contentGroup name="content4"/>
      <contentGroup name="content5"/>
      <contentGroup name="content6"/>
      <!--<wd:contentGroup name="container"/>-->
    </mastertemplate>
...

In o.g. Beispiel ist die wd:contentGroup Zeile zum "container" zur Veranschaulichung auskommentiert (wie nicht gesetzt). Somit kann das Element in einer Spalte des mehrspaltigen Inhaltscontainers nicht eingefügt werden. Setzen Sie die Zeile (ohne Kommentare), können Sie das Element auch in Spalten einfügbar machen.

Diese Technik wird z.B. auch im Bereich Newsletterbearbeitung angewandt, um nicht alle Strukturelemente standardmässig für den Newsletter bereitzustellen. Dies hat dort den Hintergrund, dass E-Mail Clients teilweise mit komplexeren HTML-Strukturen nur bedingt zurechtkommen.

3) Struktur-Elemente objektabhängig einschränken / erlauben

Die in der Seitenbearbeitung zur Verfügung stehenden Strukturelemente können Sie abhängig vom Seitenobjekt zur Auswahl bereitstellen (verfügbar ab CMS Version 005.058.045.000) .

Im Mastertemplate-Element können Sie innerhalb des wd:contentGroup Tags zur angegebenen Inhaltsgruppe (z.B. name="content1") das Element für bestimmte Objekte zulassen (objectsInclude) bzw. ausschliessen (objectsExclude).

Beschränken Sie auf diese Weise bestimmte Strukturelemente (z.B. das Tabellen-Element) auf Objekttypen.

Beispiel: Auszug aus dem Mastertemplate-Element table.standard.wItemMastertemplate.php

...
    <wd:mastertemplate>
      <wd:contentGroup name="content1" objectsInclude="start|default|news"/>
      <wd:contentGroup name="content2" objectsExclude="news"/>
      <wd:contentGroup name="content3"/>
      <wd:contentGroup name="content4"/>
      <wd:contentGroup name="content5"/>
      <wd:contentGroup name="content6"/>
      <wd:contentGroup name="container"/>
      <wd:contentGroup name="formContainer"/>
    </wd:mastertemplate>
...

4) Struktur-Elemente für eine Seite komplett ausblenden

Sie können zu einer Seite durch (bewußte) falsche Referenzierung der Mastertemplate-Datei (Datei-Eigenschaften - Templates) die Auswahl der Struktur-Elemente innerhalb der Seite unterbinden. Sofern Sie dies über die Standard-Dateieinstellungen auf Projektebene (z.B. /de) vornehmen, gilt dies für alle Seiten, die sich die Templates von dort erben.

Bei Klick auf den Struktur-Element Button "Element hinzufügen" öffnet sich in diesem Fall kein Layer und in der Fehlerkonsole des Browsers ist abhängig vom Browser eine Fehlermeldung zu finden:

z.B. Google Chrome:
Uncaught TypeError: Cannot read property 'items' of undefined

z.B. Mozilla Firefox:
TypeError: availableItemsOfGroup is undefined

Die Auswahl von Elementen über ein Strukturelement über den Anfasser bleibt in diesem Fall leer, also ohne Inhalt. Dies ist nachfolgend über Screenshots veranschaulicht.

Struktureditor - Element hinzufügen Buttonzoom
Struktureditor - Element hinzufügen Button
Struktureditor - Struktur-Element Auswahl leerzoom
Struktureditor - Struktur-Element Auswahl leer
 

5) Struktur-Elemente deaktivieren (offline setzen)

Ein deaktivieren (offline setzen) von Mastertemplate-Elementen bewirkt, daß Sie ein bestehendes Strukturelement, das auf solch einem Mastertemplate-Element basiert, nicht in andere Seiten einfügen können (z.B. per Zwischenablage-Funktion). Beim Einfügen erfolgt ein entsprechender Hinweis:

Das Element darf in diese Gruppe nicht eingefügt werden!

Um das Einfügen wieder zu ermöglichen, aktivieren Sie das entsprechende Mastertemplate-Element wieder (online setzen).

Allgemeine Hinweise

Die Anzeige von Strukturelementen innerhalb der Struktureditor-Auswahl kann auch dadurch beeinflußt werden, wenn XSL-Templates die gleichen Gruppen aufrufen.
Nachfolgend wird dies anhand des mehrspaltigen Inhaltscontainers(container.standard) und einem speziell für den Newsletter angelegten XSL-Template (container.newsletter) aufgezeigt. Wenn beide für die Spalteninhalte (column1, column2, etc.) die gleiche Gruppen-ID angesprechen, kann dies kollidieren. Nutzen Sie daher im individuell angelegten Template einen speziellen Modus für den Templateaufruf (siehe Beispiel).

Auszug aus einem eigenen container.newsletter.wItem.php Template

<!-- Umsetzung ohne mode-Angabe -->
...
  <template match="wd:group[@id='column1']">
    <!-- web:group:start name="container" itemsInclude="headline.text|picture.standard|text.wysiwyg|link.standard" display="user" -->
      <apply-templates select="wd:item"/>
    <!-- web:group:stop -->
  </template>
...

<!-- Empfehlung: Umsetzung mit mode-Angabe -->
...
  <template match="wd:group[@id='column1']" mode="newsletter">
    <!-- web:group:start name="container" itemsInclude="headline.text|picture.standard|text.wysiwyg|link.standard" display="user" -->
      <apply-templates select="wd:item"/>
    <!-- web:group:stop -->
  </template>
...
<!-- Die mode-Angabe muß dann auch im xsl:apply-templates Aufruf gesetzt werden! -->

Sollten sich vorhandene Strukturelemente nicht verschieben lassen, kann dies z.B. folgende Ursachen haben:

  • type-Angabe des XSL-Templates und Mastertemplates unterscheiden sich

Ähnliche Seiten

Entwicklerbereich Weblication® CMS - © Scholl Communications AG