Montag, 30. Mai 2011

PreExecute in RedDot

In dem Content Managment System RedDot ist es möglich Skriptcode vor dem Publizieren auszuführen. Dadurch wird z. B. je nach Elementeintrag der Inhalt des entsprechenden Containers gerendert. Es wird eine statische Seite mit ausgeführen Ergebnis publiziert.

Einstellungen für PreExecute in RedDot
Um auszuführenden Skriptcode vor dem Publizieren in ein Template zu schreiben, müssen ein paar Einstellungen in RedDot vorgenommen werden.
Unter SmartTree - Projekteinstellungen bearbeiten - Projekt - Allgemeine Einstellungen muss ein Haken gesetzt werden an "Active Template zulassen". Bei den "wählbaren Suffixe" können alle serverseitigen Sprachen wie PHP, JSP, ASP, mit Semikolon getrennt, angegeben werden.
Weiterhin müssen die Projektvarianten eingestellt werden. Unter "SmartTree - Projekteinstellungen bearbeiten - Projekt - Projektvarianten" kann eingestellt werden welcher Skriptcode in der Projektvariante verarbeitet werden kann. Unter dem DropDown bei "Active Template ausführen als" sind alle Skriptsprachen gelistet, die man bei den Projekteinstellungen angegeben hatte.

Beispiel
Ich möchte, dass je nach Loginstatus ein anderer Container gerendert wird.
Es besteht ein Optionsfeld "opt_websiteRole", in dem der Redakteuer angeben kann, ob diese Seite als eingeloggt oder ausgeloggt angezeigt werden soll. Außerdem sind im Template Inhaltscontainer "cont_loggedIn" und "cont_loggedOut", die je nach Optionseintrag ausgewählt werden sollen. In meiner Projektvariante habe ich ASP als auszuführendes Skript angegeben.

<!IoRangePreExecute>
<% role = <%opt:_webseiteRole%>
<% if role = "loggedIn" then %>
<%cont_loggedIn%>
<% elseif role = "loggedOut" then %>
<%cont_loggedOut%>
<%end if%>
<!/IoRangePreExecute>

<!IoRangePreExecute> <!/IoRangePreExecute>
markiert im Template den PreExecute-Bereich. Ohne diesen Tag wird der ASP Code nicht ausgeführt, sondern als HTML in die Seite gerendert. Mit
<% role = <%opt:_webseiteRole%>
wird die Variable "role" gesetzt mit dem Inhalt des Optionsfeldes "opt_websiteRole", dass der Redaketeur gepflegt hat. Durch die If-Abfrage wird ermittelt welcher Container genutzt werden soll.

Probleme
Beim Umgang mit PreEcxecute in RedDot muss die korrekte Ausführung von Sonderzeichen in den Skriptseiten sichergestellt sein. Dies kann der Dokumentation der jeweiligen Skriptsprache entommen werden.
Das Debuggen ist nur möglich, wenn das Löschen der temporär erstellten Datei für die Ausführung der PreExecute-Seite unterdrückt wird. Mehr Informationen zum Debuggen.
Weiterhin ist es nicht möglich RedDot Query Language (RQL) in PreExecute Blockmakierungen zu schreiben. Warum wird hier erklärt.
Abschließend ist zu sagen, dass umfangreiche Skripts das Ausliefern der Seite verzögern.