Seit einiger Zeit geistern bei mir im Kopf, was ich auch schon bei uns im Slack andiskutiert habe, Ideen rum. Dabei geht es um Dinge, wie man bei Web Site Management - in meinem Fall insbesodere beim Management Server - wieder vereinfachen kann.
Denn wir bei uns im Unternehmen beobachten immer wieder Fälle, bei denen sich die Anwender, Projekt-Admins oder Template-Enabler schwer tun. Vor allem wenn man bestimmte Tätigkeiten nicht so häufig oder intensiv durchführt.
Daher möchte ich mich - und als Vorbereitung für die anstehende Usergroup in München - mit einer Artikelserie erstmal um diese Themenblöcke visionär widmen:
Im ersten Artikel geht es primär um den Bereich "Templating", welche wir bereits im aktuellen Release haben.
Ich würde mich freuen, wenn man zu den einzelnen Artikel in unserem Slack auch intensiv diskutieren würde, damit man auch die anderen Blickwinkel auf diese Themenblöcke mitbekommt.
Die s.g. Blockmarkierungen werden in der Online-Hilfe von Release 16 wie folgt beschrieben:
Über Blockmarkierungen können bestimmten Abschnitten im Code eines Templates bestimmte Funktionen zugeordnet werden. Beispielsweise steuern Sie über Blockmarkierungen, welcher Code in welcher bestimmten Ansicht sichtbar ist oder welche Bereiche bei dynamischen Elementen berücksichtigt werden sollen.
Über die Liste Blockmarkierungen setzen Sie eine Blockmarkierung in Ihren Code. Wenn Sie zu einem Bereich des Codes eine Blockmarkierung wählen, wird der Code des gewählten Bereichs von einem Anfangs- und einem End-Tag der jeweiligen Blockmarkierung eingerahmt. Die eingefügten Tags sind grün hinterlegt.
Blockmarkierungen sind in den Content-Klassen bzw. deren Templates wie folgt gekennzeichnet:
<!IoRangeBlocktyp> ... <!/IoRangeBlocktyp>
Es gibt folgende Blocktypen im Management Server:
<!IoRangeBack> ... <%Anchor%> ... <!/IoRangeBack>
<!IoRangeBreadCrumb> <%Breadcrumb%> <!/IoRangeBreadCrumb>
<!IoRangeConditional> ... <%Image%> ... <!/IoRangeConditional>
<!IoRangeData> ... <ÚtenbankElement%> ... <!/IoRangeData>
<!IoRangeDragDrop> ... <%Container%> ... <!/IoRangeDragDrop>
<!IoRangeDynLink> ... <%AnchorDynamisch%> ... <!/IoRangeDynLink>
<!IoRangeHit> ... <%TrefferListe%> ... <!/IoRangeHit>
<!IoRangeList> ... <%Liste%> ... <!/IoRangeList>
<!IoRangePreExecute> ... ActiveTemplating Code ... <!/IoRangePreExecute>
<!IoRangeRedDotMode> ... <!/IoRangeRedDotMode>
<!IoRangeNoRedDotMode> ... <!/IoRangeNoRedDotMode>
<!IoRangeRedDotEditOnly> ... <!/IoRangeRedDotEditOnly>
<!IoRangeNoEditMode> ... <!/IoRangeNoEditMode>
Diese Blockmarkierungen sind das Herzstück der Content-Klassen bzw. Templates im Management Server. Und der Vorteil, man kann diese Blockmarkierungen auch in Kombination verwenden. Dazu aber später noch mehr.
Die o.g. Liste der Blockmarkierungen ist überschaubar und für das aktuelle Elementsystem sinvoll - jedoch auch ausreichend? Meiner Meinung nach reichen die aktuellen Blockmarkierungen nicht aus und daher werden diese immer wieder mit den folgenden RenderTag-Bedingungen vermischt:
Wenn man sich die o.g. Blockmarkierungen ansieht fällt auf, dass man bei einigen Blocktypen nicht alle notwedigen Varianten implementiert hat. Wie z.B. bei
SmartEdit Modus:
<!IoRangeRedDotMode> ... <!/IoRangeRedDotMode>
Seitenvorschau/Publizierungs Modus:
<!IoRangeNoRedDotMode> ... <!/IoRangeNoRedDotMode>
denn hier fehlt noch der Modus, welcher klar zwischen Publizierung und Seitenvorschau trennt. Daher kommen immer wieder die RenderTags mit komplexen If/else Abfragen auf den CurrentRenderMode zum tragen.
Ebenso gibt es unterschiedliche Implementierungen für ähnliche Abläufe, wie bei Active-Templating...
...zur Laufzeit:
<!--RDExecute=[*]-->
und bei der Publizierung:
<!IoRangePreExecute> ... <!/IoRangePreExecute>
Die Blockmarkierungen sind eine feine Sache - noch lange nicht in die Jahre gekommen - und halten das Templating im Management Server einfach. Jedoch nur solange, wie man ausschließlich mit Blockmarkierungen und Elementen auskommt. Sobald etwas fehlt und man auf ActiveTemplating oder RenderTags - oder sogar beides in Kombination - zurückgreifen muss. Dann wird es komplex und man muss sich bestimmten Regeln unterwerfen, welche Stefan Buchali in seinem Artikel Die RedDot-Reihenfolge und C# im PreExecute: Tipps, Tricks und böse Fallen sehr gut aufgezeigt hat.
Daher möchte ich in nächsten Artikeln Beispiele aufzeigen, wie man das aktuelle Blockmarkierungssystem sinnvoll erweitern könnte und somit die Komplexität in den Templates deutlich für die Projekt-Admins reduziert.
Ebenso möchte ich etwas provokant andiskutieren, ob dann RenderTags überhaupt noch nötig sind bzw. ob man darauf nicht sogar komplett verzichten kann. Jedoch dazu mehr im nächsten Artikel: Erweiterungen bei den Blockmarkierungen - Warum macht das Sinn?
... 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.