29A94858BC164D42A33E994A775A6088
  • Thomas Pollinger
  • 12.06.2019
  • DE

Store: Objekte und Variablen

 

Allgemein

In den ObjectLoader (Provider) Store kann man, während des Renderns einer Seite, vorübergehend einen Wert speichern. Jeder Store besteht aus einem Namen (key) und Wert (value). Der Name muss vom Typ String sein. Der Wert kann ein beliebiges Element, das von einem anderen RenderTag oder ObjectLoader abgerufen werden kann, oder eine direkt zugewiesene Zeichenfolge sein.

Es gibt auch den RenderTag store, dieser unterscheidet sich im ObjectLoader (Provider) Store in folgenden Bereichen:

  • Schreibweise und Syntax (Groß- vs. Kleinschreibung).
  • Einsatzgebiet:
    • RenderTag store wird in der ausführlichen Schreibweise genutzt.
    • ObjectLoader (Provider) Store dient als Kurzschreibweise.

 

Hinweise

Für ObjectLoader (Provider) Store gelten folgende Einschränkungen:

  • Wenn ein RenderSpot mit genau dem gleichen Code beim Rendern einer Seite mehrere Male verwendet wird, wird er nur einmal ausgeführt. Jede Instanz eines RenderTag oder ObjectLoader wird durch das gleiche Ergebnis ersetzt. Dies gilt auch, wenn anstelle der RenderSpots die Kurzschreibweise verwendet wird, jedoch nicht, wenn die Kurzschreibweise in einem RenderSpot verwendet wird.
  • Standardmäßig wird der Bereich eines gespeicherten Werts auf den Thread beschränkt, in dem er definiert ist. Aufgrund der Verwendung von Multithread-Rendering bei Navigationsbereichen können die Stores nicht zwischen Navigationsbereichen und Masterpages ausgetauscht werden. Wenn man beispielsweise einen Store im Masterpage-Template oder in einer Container-Seite der Masterpage definiert hat, kann der Wert des Stores nicht beim Rendern des Navigationsbereichs abgerufen werden. In solchen Fällen kann man den Navigationsbereich sequenziell ausführen. Weitere Details findet man unter Provider Navigation in der Online-Hilfe.

 

Methoden

Quelle: OpenText Web Site Management Server Online-Hilfe

Set(String, Object)

  • Mit dem folgenden ObjectLoader (Provider) kann man einen Wert erstellen oder einen gespeicherten Wert wieder überschreiben.
  • <%!! Store:Set(String:storeKey, String:storeValue) !!%>

 

Get(String)

  • Mit dem folgenden ObjectLoader (Provider) kann man einen gespeicherten Wert aus einem Store lesen.
  • <%!! Store:Get(String:storeKey) !!%>

 

 

Schreibweisen

Quelle: OpenText Web Site Management Server Online-Hilfe

Ausführliche Schreibweise für den RenderTag store 

  • <reddot:cms>
      <store key="storeKey" object="String:storeValue"/>
    </reddot:cms>
    
    <reddot:cms>
      <output type="object" object="Store:storeKey"/>
    </reddot:cms>
    

Kurzschreibweise für den ObjectLoader (Provider) Store

  • <%!! Store:Set(String:storeKey, String:storeValue) !!%>
    
    <%!! Store:Get(String:storeKey) !!%>
    

Alternative und noch kürzere Schreibweise für den ObjectLoader (Provider) Store

  • <%!! Store:Set(storeKey,storeValue) !!%>
    
    <%!! Store:storeKey !!%>
    

 

Beispiele

Quelle: OpenText Web Site Management Server Online-Hilfe

Der ObjectLoader (Provider) Store kann beispielsweise innerhalb einer Kontrollstruktur vom Typ foreach verwendet werden.

  • <reddot:cms>
      <foreach itemname="item" object="Context:CurrentPage.Elements">
        <output type="object" object="Store:item.Name"/>
      </foreach>
    </reddot:cms>

Alternativ auch innerhalb eines Navigation-Renderings.

  • <reddot:cms>
      <foreach itemname="item" object="Context:CurrentIndex.SubIndexes">
        <output type="object" object="Store:item.Headline" />
      </foreach>
    </reddot:cms>

Oder auch innerhalb einer Kombination der Kontrollstruktur vom Typ foreach und vom Typ if .

  • <reddot:cms>
      <foreach itemname="item" object="Context:CurrentIndex.SubIndexes" countername="counter">
        <if>
          <query valuea="Store:counter" operator="!=" valueb="Int:0">
            <output type="string">, </output>
          </query>
        </if>
        <output type="object" object="Store:item.Headline" />
      </foreach>
    </reddot:cms>

Ebenso lassen sich auch komplette Objekte bzw. Collections zwischenspeichern und wieder abfragen.

  • <%!! Store:Set(String:storeKey, Context:CurrentPage.Elements) !!%>
    
    <%!! Store:Get(String:storeKey)[Int32:1] !!%>
    <%!! Store:Get(String:storeKey).GetElement(String:elementName).GetHtml() !!%>

 

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
    23.06.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.