Dustin Deus
Software-Engineer

Sitecore 6.6 ohne “Site” – Rendering Parameter Templates


Sitecore bietet mit den sogenannten Rendering Parametern einen flexiblen Weg, zusätzliche Parameter an Controls übergeben zu können. Hierbei wird ein neues Template – auf Basis der Standard Rendering Parameter (System/Layout/Rendering Parameters/Standard Rendering) – mit den zusätzlichen Feldern erzeugt. In diesem neuen Template können dann zusätzliche Felder erstellt und verwendet werden, ohne die „alten“ zu verlieren. 

Um dem Rendering mitzuteilen, dass es nun ein neues Parameter Template besitzt, muss noch die Eigenschaft Parameters Template im Rendering angepasst und auf mein neues Template gesetzt werden. 

Die Möglichkeiten, diese neuen Parameter abzufragen variieren: 

In Sublayouts zum Beispiel:
var sublayout = (Sitecore.Web.UI.WebControls.Sublayout)this.Parent;
var layoutParameters = System.Web.HttpUtility.ParseQueryString(sublayout.Parameters);

//if this web control is statically bound we don't get the layoutParameters from the
//layout values so check to see if this have been set before checking the parameters

            if (string.IsNullOrEmpty(Category))
            {
                if (layoutParameters["Category"] != null)
                {
                    Category = layoutParameters["Category"];
                }
                
}


Hierbei ist es sehr praktisch, eine neue Basis Klasse für alle Sublayouts anzulegen, um die Parameter Initialisierung nur einmal machen zu müssen. 

In XSLT Controls ist es dafür relativ einfach:
<xsl:param name="Category" />

Info: Parameter Namen werden case sensitive behandelt.

Schauen wir uns das neue Rendering Parameter Template an:


 

 

Schnell fällt uns auf, dass man zum Template nur wenig bemängeln kann, da es lediglich aus einer Section und 3 Parametern besteht.
Doch wie trivial das Beispiel auch ist, der Fehler liegt im Detail.



 

Verwendet man den Namen „Site“ in einem Rendering Parameter Template Feld, wirft Sitecore eine unbehandelte 'System.String' to 'System.ComponentModel.ISite' Exception. 
Daher unbedingt darauf achten, vorerst keinen Parameter mit dem Namen „Site“ zu verwenden.



 

Wir haben den Fehler zu der Produktversion (6.6.0 rev. 130529 Revision) an den Sitecore Support gemeldet … TO BE CONTINUED




Kommentare
1

Eric Franzbonenkamp

Danke, das sind wirklich sehr nützliche Informationen. Guter Blog!

am 12.11.2013

Kommentar hinzufügen
Vor und Zuname
E-Mail
E-Mail bei weiteren Kommentaren
Mein Kommentar