Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
0800 1 255 255

Content Query WP und nicht interpretiertes HTML in Sharepoint 2010

Das Content Query WebPart bie­tet dem Nutzer die Möglichkeit "mal schnell" Inhalte aus einer bestimm­ten Site oder Liste auf einer Seite zu publi­zie­ren. Dabei besteht die Möglichkeit aus diver­sen Anzeige-Modi zu wäh­len. Sollen aller­dings Inhalte aus einer Richtext-HTML-Spalte ange­zeigt wer­den, bei­spiels­weise die Description einer Posts Liste, wird das HTML nicht auf­ge­löst.

MitHTML

Die Lösung die­ses Problems ist die Anpassung der Itemstyle.xsl, die sich in der StyleLibrary/Formatbibliothek befin­det. Um im Edit-Mode des CQWPs einen zusätz­li­chen Item Style zu haben, der HTML nicht als Text inter­pre­tiert, muss in der Itemstyle.xsl ein Template (zum Beispiel LargeTitle) kopiert und ange­passt wer­den.

<xsl:template name="LargeTitle" match="Row[@Style='LargeTitle']" mode="itemstyle">
...
</xsl:template>

Hier soll­ten nun die Attribute name und match ent­spre­chend ver­än­dert wer­den (zum Beispiel LargeTitle durch NewLargeTitle erset­zen). Damit das HTML des Blogeintrags, also der Description Spalte, inter­pre­tiert wird und nicht als Text aus­ge­ge­ben 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än­dert wer­den. Dabei ist vor­al­lem das Attribut disable-output-escaping="yes" wich­tig, wel­ches eine Escape-freie Ausgabe lie­fert, also die RichHtml-Tags inter­pre­tiert und nicht ein­fach aus­gibt. (mehr Informationen hier)

Die Ausgabe des Content Query WebParts sollte nun unge­fähr so aus­se­hen.

HTMLaufgeloest

Related Posts

Hallo Anne, habs gerade erfolg­reich ver­wen­det 🙂 vlgC

Hi Anne,
bei mir lief das lei­der nicht, ich muss aber auch sagen, das ich es etwas hef­tig finde im Hive den Code der XSL Dateien zu ändern… ich bin inzwi­schen mit JQuery zum Ziel gekom­men, 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 wenigs­tens muss ich dazu nicht ans Dateisystem.

Gruß, Nils

Hallo Nils,

die XSLT-Dateien fin­dest 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 kopie­ren, umzu­be­nen­nen und anzu­pas­sen. Damit bleibt der Standard bestehen. Du musst dann ledig­lich noch das rich­tige Template in den Webparteinstellungen ver­wen­den.
Die MSDN bie­tet dazu auch ein paar Infos: http://msdn.microsoft.com/en-us/library/bb447557.aspx

Viele Grüße,
Anne

Comments are closed.

Pin It on Pinterest