Das Content Query WebPart bietet dem Nutzer die Möglichkeit "mal schnell" Inhalte aus einer bestimmten Site oder Liste auf einer Seite zu publizieren. Dabei besteht die Möglichkeit aus diversen Anzeige-Modi zu wählen. Sollen allerdings Inhalte aus einer Richtext-HTML-Spalte angezeigt werden, beispielsweise die Description einer Posts Liste, wird das HTML nicht aufgelöst.
Die Lösung dieses Problems ist die Anpassung der Itemstyle.xsl, die sich in der StyleLibrary/Formatbibliothek befindet. Um im Edit-Mode des CQWPs einen zusätzlichen Item Style zu haben, der HTML nicht als Text interpretiert, muss in der Itemstyle.xsl ein Template (zum Beispiel LargeTitle) kopiert und angepasst werden.
<xsl:template name="LargeTitle" match="Row[@Style='LargeTitle']" mode="itemstyle"> ... </xsl:template>
Hier sollten nun die Attribute name und match entsprechend verändert werden (zum Beispiel LargeTitle durch NewLargeTitle ersetzen). Damit das HTML des Blogeintrags, also der Description Spalte, interpretiert wird und nicht als Text ausgegeben wird, muss nun noch die Ausgabe des Description Values von
<div> <xsl:value-of select="@Description" /> </div>
in
<div style="padding-left:5px; color:#333333;"> <xsl:value-of select="@Description" disable-output-escaping="yes"/> </div>
geändert werden. Dabei ist vorallem das Attribut disable-output-escaping="yes" wichtig, welches eine Escape-freie Ausgabe liefert, also die RichHtml-Tags interpretiert und nicht einfach ausgibt. (mehr Informationen hier)
Die Ausgabe des Content Query WebParts sollte nun ungefähr so aussehen.
Hallo Anne, habs gerade erfolgreich verwendet 🙂 vlgC
Hi Anne,
bei mir lief das leider nicht, ich muss aber auch sagen, das ich es etwas heftig finde im Hive den Code der XSL Dateien zu ändern… ich bin inzwischen mit JQuery zum Ziel gekommen, indem ich mir den Text geholt und als HTML geparst habe:
var t = $('#WebPartWPQ5').find(".description");
for(var i=0; i<t.size(); i++){
$(t.get(i)).css("padding-left", "10px").html($(t.get(i)).text());
}
Ist auch nicht ideal, aber wenigstens muss ich dazu nicht ans Dateisystem.
Gruß, Nils
Hallo Nils,
die XSLT-Dateien findest du in der Formatbibliothek des SharePoints, nicht im 14er-Hive.
http://[servername]/Style%20Library/Forms/AllItems.aspx
In der Datei hast du auch die Möglichkeit ein Standard-Template z.B. <xsl:template name="LargeTitle" (wie oben) zu kopieren, umzubenennen und anzupassen. Damit bleibt der Standard bestehen. Du musst dann lediglich noch das richtige Template in den Webparteinstellungen verwenden.
Die MSDN bietet dazu auch ein paar Infos: http://msdn.microsoft.com/en-us/library/bb447557.aspx
Viele Grüße,
Anne