5D95B510F5724CB598C87135E1267DC7
  • Thomas Pollinger
  • 03.07.2019
  • DE

Kontrollstruktur: else

 

Allgemein

Im Template Rendering kann man Kontrollstrukturen verwenden. Für eine Kontrollstruktur if kann man eine alternative Anweisung else definieren. Diese Anweisung wird dann ausgeführt, wenn die Bedingung der Kontrollstruktur if nicht zutrifft. Die alternative Anweisung else formuliert man im innerhalb des RenderTag if mit dem zweiten Tag query, welches zusätzlich das Attribut type mit dem fixen Wert else bekommt.

 

Hinweise

  • Der innere Teil des RenderTag if > query wird nur ausgeführt, wenn die Bedingung erfüllt ist.
  • Der Tag query mit type="else" wird dann ausgeführt, wenn die Bedingung der darüberliegenden if > query nicht zutrifft.
  • Die Bedingung wird mit Attributen innerhalb des RenderTag if > query formuliert.
  • Der RenderTag if > query hat die folgenden Attribute:
    • valuea
      Steht für den ersten Wert.
    • valueb
      Steht für den zweiten Wert.
    • operator
      Gibt den Operator vor.
  • Für die Verwendung if > query als else gibt es das folgende Attribute:
    • type
      mit dem fixen Wert else.
  • Die folgenden Operatoren können innerhalb if > query verwendet werden:
    • == (gleich)
      Prüft, ob der erste und zweite Wert gleich sind.
    • != (ungleich)
      Prüft, ob der erste und zweite Wert ungleich sind. Gibt immer das Gegenteil von == zurück.
    • eqlt (kleiner oder gleich)
      Prüft, ob der erste Wert kleiner als der zweite ist oder ob beide gleich sind.
    • eqgt (größer oder gleich)
      Prüft, ob der erste Wert größer als der zweite ist oder ob beide gleich sind.
    • lt (kleiner)
      Prüft, ob der erste Wert kleiner als der zweite ist.
    • gt (größer)
      Prüft, ob der erste Wert größer als der zweite ist.
  • Operatoren, welche die Größe vergleichen, können nur beim Vergleichen von Zahlen Int32/Int verwendet werden.

 

Beispiele

Quelle: OpenText Web Site Management Server Online-Hilfe

Im folgenden Beispiel wird der RenderTag navigation:nextlevel aufgerufen, wenn der aktuelle Index untergeordnete Index-Objekte (Seiten) hat. Andernfalls wird der Text Keine untergeordneten Seiten ausgegeben.

  • <reddot:cms>
      <if>
        <query valuea="Context:CurrentIndex.HasChildren()" operator="==" valueb="Bool:True">
          <htmltext>
            <navigation:nextlevel>
          </htmltext>
        </query>
        <query type="else">
          <htmltext>
            No child pages
          </htmltext>
        </query>
      </if>
    </reddot:cms>
    

Im nun folgenden Beispiel werden zwei Objekte miteinander verglichen:

  • <reddot:cms>
      <if>
        <query valuea="Context:CurrentPage.Id" operator="==" valueb="Context:CurrentMasterPage.Id">
          <htmltext>Gleiche Seite</htmltext>
        </query>
        <query type="else">
          <htmltext>Andere Seite</htmltext>
        </query>
      </if>
    </reddot:cms>
    

Es gibt auch die Möglichkeit, dass man den Tag query mehrfach verwendet, innerhalb von if:

  • <reddot:cms>
      <if>
        <query valuea="Context:CurrentPage.Id" operator="==" valueb="Context:CurrentMasterPage.Id">
          <htmltext>Gleiche Seite</htmltext>
        </query>
        <query valuea="Context:CurrentPage.Headline" operator="==" valueb="Context:CurrentMasterPage.Headline">
          <htmltext>Gleiche Überschrift</htmltext>
        </query>
        <query type="else">
          <htmltext>Andere Seite oder Überschrift</htmltext>
        </query>
      </if>
    </reddot:cms>
    

Jedoch sollte es nur einen Tag query mit dem Attribut type und dem Wert else geben.

Wichtig: Bei dieser Art der Verwendung ist, dass man ganz genau weiß welche Kombinationen möglich sind. Damit man sich über das Verhalten und die möglichen Ergebnisse nicht wundert.

 

Custom RenderTag

Es gibt auch die Möglichkeit eigene s.g. Custom RenderTags mit .NET Framework zu erstellen und dann beim Template Rendering aufzurufen. Dazu findet man im OpenText™ Developer Network Beispiel Code und eine ausführliche Anleitung.

 

Gilt für

  • OpenText™ Web Site Management Server
    Release 16.0.3
  • Letztes Artikelupdate
    06.07.2019

 

Siehe auch


Über den Autor:
Thomas Pollinger

... ist Senior Site Reliability Engineer bei der Vodafone GmbH in Düsseldorf. Seit dem Jahr 2007 betreut er zusammen mit seinen Kollegen die OpenText- (vormals RedDot-) Plattform Web Site Management für die deutsche Konzernzentrale.

Er entwickelt Erweiterungen in Form von Plug-Ins und PowerShell Skripten. Seit den Anfängen in 2001 (RedDot CMS 4.0) kennt er sich speziell mit der Arbeitweise und den Funktionen des Management Server aus.