SharePoint 2010 – Newsticker für neue Blogeinträge auf anderen Seiten einbinden

Standardmäßig bietet 2010, außer des Inhaltsabfrage-Webparts, keine Möglichkeit, den Inhalt eines Blogs auf anderen Seiten, als der -Seite selbst, darzustellen. Die normale Ansicht bietet dabei lediglich die Option zwei Attribute eines Blogeintrags anzuzeigen und dies grafisch auch nicht besonders schön. Um die Bloginhalte sinnvoll darzustellen sind einige Anpassungen an der -Datei des Inhaltsabfrage-Webparts und der ItemStyle. notwendig.

Nun zur Vorgehensweise: Als erstes binden wir auf der Seite, auf der die Inhalte des Blogs eingebunden werden sollen, einen Inhaltsabfrage-Webpart ein. Dieser wird anschließend initial konfiguriert. Als Abfrage-Quelle wird die Liste der Blog-Einträge ausgewählt und als Beitrag ausgewählt.

Sind diese Einstellungen vorgenommen, können die Einstellungen so gespeichert werden. Nun wird der Webpart exportiert, diese Option findet sich über den selben Weg wie das Bearbeiten des Webparts. Ist nun eine lokale Kopie des Webparts vorhanden, kann diese mit einem Editor (z.B.: Notepad) geöffnet werden. Hier müssen nun die Spalten definiert werden, die später im Webpart angezeigt werden sollen. Dazu den Punkt <property name=“CommonViewFields“ type=“string“ > suchen. Dort werden die jeweiligen Felder definiert. Wichtig ist hier das zu den Feldern auch der Typ des Feldes mit angegeben wird. In der endgültigen Lösung soll zum Beispiel das Datum, die Kategorie, der Titel, der Author und der Inhalt des Blog-Eintrags dargestellt werden. Somit sieht die Zeile wie folgt aus:


<property name=“CommonViewFields“ type=“string“ >   Title,Text;PostCategory,MultiLookup;PublishedDate,DateTime;Author,User;Body,Note  </property>

Wichtig ist hier, das für das Kategorie-Feld nicht der Typ Lookup sondern MultiLookup angegeben wird, da ansonsten keine Inhalte dargestellt werden.

Sind die Änderungen entsprechend der persönlichen Wünsche durchgeführt, kann der Webpart wieder importiert und in die Seite eingebunden werden. An der Darstellung der Inhalte hat sich bis jetzt noch nichts geändert. Damit der Inhalt so dargestellt wird, wie es gewünscht ist, muss noch die ItemStyle.xsl angepasst werden.

Dies geschiet über den SharePoint Designer. Dazu einfach mit der entsprechenden Websitesammlung verbinden und zu

Titel der Websitesammlung > All Files > Style Library > XSL Style Sheets

navigieren. Dort findet sich die Datei ItemStyle.xsl. Diese muss zuerst ausgecheckt werden. Im Anschluss daran kann die Anpassung beginnen. Wenn man sich die Datei genauer anschaut, stellt man fest, dass hier die verschiedenen Darstellungsoptionen für den Inhaltsabfrage-Webpart definiert sind. Um die vorher gewünschten Inhalte darzustellen muss einfach ein neues xsl-Template eingefügt werden. Aber Schritt für Schritt…

Als erstes muss zum Kopf der XSL-Datei folgende Zeile hinzugefügt werden:


xmlns:ddwrt=http://schemas.microsoft.com/WebParts/v2/DataView/runtime

Damit werden weitere Funktionen, die später benötigt werden, für die XSL-Datei bereitgestellt. Anschließend kann mit dem Erstellen eines neuen xsl-Templates begonnen werden. Dazu einfach folgende Zeilen an das Ende der Datei anfügen (alle anzupassenden Stellen sind rot markiert:


<xsl:template name=“Blog-Ansicht“ match=“Row[@Style=Blog-Ansicht]“ mode=“itemstyle“>

Definition der Template-Eigenschaften, Bezeichnung kann frei gewählt werden. Anschließend Definition von zwei Variablen, die im Weiteren benötigt werden. (Authormysite ist der Anmeldenamen des Blogerstellers, SafeLinkUrl ist der Link zum Blogeintrag)

<xsl:variable name=“authormysite“>
<xsl:value-of select=“ddwrt:UserLookup(string(@Author) ,’Login‘)“ />
</xsl:variable>
<xsl:variable name=“SafeLinkUrl“>
<xsl:call-template name=“OuterTemplate.GetSafeLink“>
<xsl:with-param name=“UrlColumnName“ select=“‚LinkUrl'“/>
</xsl:call-template>
</xsl:variable>

Hier beginnt die Definition der Darstellung der Blogeinträge:

<div id=“linkitem“>
<!–Definition einer Tabelle–>
<table cellpadding=“3″ cellspacing=“3″ width=“100%“>
<tr>
<td style=“width:10%“ valign=“top“>
<span style=“display:inline“>
<xsl:value-of disable-output-escaping=“yes“ select=“ddwrt:FormatDate(string(@PublishedDate) ,1031 ,1)“/><!–Spalte1 Datum des Blog-Eintrags–>
</span>
</td>
<td style=“width:20%“ valign=“top“>
<xsl:call-template name=“OuterTemplate.CallPresenceStatusIconTemplate“/>
<a href=“{$SafeLinkUrl}“ title=“{@LinkToolTip}“><xsl:value-of disable-output-escaping=“yes“ select=“@Title“ />
<!–Spalte2 Titel des Blog-Eintrags mit Link zum Eintrag–>
</a>
</td>
<td style=“width:30%“ valign=“top“>
<xsl:variable name=“bodyContent“>
<xsl:call-template name=“removeMarkup“>
<xsl:with-param name=“string“ select=“@Body“/><!–Spalte3 Der Text des Blogeintrags, angepasst durch ein weiteres Template „Remove Markup“–>
</xsl:call-template>
</xsl:variable>
<div>
<xsl:value-of select=“substring($bodyContent,1,250)“/>…<!–Definition der angezeigten Zeichen des Blog-Textes–>
<div>
<xsl:call-template name=“OuterTemplate.CallPresenceStatusIconTemplate“/>
 <a href=“{$SafeLinkUrl}“ title=“{@LinkToolTip}“>
<xsl:if test=“$ItemsHaveStreams = ‚True'“>
<xsl:attribute name=“onclick“>
<xsl:value-of select=“@OnClickForWebRendering“/>
</xsl:attribute> </xsl:if> <xsl:if test=“$ItemsHaveStreams != ‚True‘ and @OpenInNewWindow = ‚True'“>
<xsl:attribute name=“onclick“>
<xsl:value-of disable-output-escaping=“yes“ select=“$OnClickTargetAttribute“/>
 </xsl:attribute>
</xsl:if>
Weiterlesen <!–An den Text “Weiterlesen” anhängen und mit Blog-Eintrag verlinken–>
</a>
</div>
</div>
</td>
<td style=“width:20%“ valign=“top“>
<a href=“http://mysharepointsite.domain/my/Person.aspx?accountname={$authormysite}“> <!–Url zumAufruf einer MySite–>
 <b>
<xsl:text>Autor: </xsl:text>
</b>
<br />
<xsl:value-of select=“@Author“ /> <!–Spalte4 Autor des Blog-Eintrags, mit Link auf seine MySite–>
</a>
</td>
<td style=“width:20%“ valign=“top“>
<b>
<!–Spalte5 Kategorien des Blog-Eintrags–>
<xsl:text>Kategorie: </xsl:text></b>
<br />
<xsl:value-of select=“@Kategorien“ />
</td>
</tr>
</table>
<div style=“clear:both;“>
</div>
</div>
</xsl:template>

Defintion des zweiten Templates zum anpassen des Body-Textes:


<xsl:template name=“removeMarkup“>
<!–Zweites Template, dass den Text des Blog-Eintrags in Plain-Text umwandelt und ihn auf die definierte Zeichenanzahl kürzt–>
<xsl:param name=“string“ />
<xsl:choose> <xsl:when test=“contains($string, ‚&lt;‘)“>
<xsl:variable name=“nextString“>
<xsl:call-template name=“removeMarkup“>
<xsl:with-param name=“string“ select=“substring-after($string, ‚&gt;‘)“ />
</xsl:call-template>
</xsl:variable>
<xsl:value-of select=“concat(substring-before($string, ‚&lt;‘), $nextString)“ />
 </xsl:when>
<xsl:otherwise>
<xsl:value-of select=“$string“ />
</xsl:otherwise>
</xsl:choose>
</xsl:template>

Sind die Änderungen im xsl-File gemacht, kann es gespeichert und eingecheckt werden.

Der nächste Schritt ist nun die Anpassung des am Anfang angepassten Webparts. Hierfür werden die Einstellungen zum Webpart über Webpart bearbeiten aufgerufen.

Unter dem Punkt Präsentation > Formate > Format für Elemente wird das neu erstellte Template Blog-Einträge ausgewählt.

Anschließend sind unter Anzuzeigende Felder die am Anfang denfinierten Eintrags-Eigenschaften zu sehen. Diese müssen nun noch mit den entsprechenden Spalten der Blog-Einträge verknüpft werden. Die Zuordnung lautet wie folgt:

Titel -> Titel [Benutzerdefinierte Spalten]

Autor -> Author

Published Date -> Veröffentlicht

Body -> Textkörper

Kategorien -> Kategorie [Benutzerdefinierte Spalten]

Anschließend werden die Änderungen mit OK alle Änderungen übernommen. Nun sollte eine Übersichtsansicht der Blog-Einträge auf der jewiligen Seite erscheinen.

Das Ganze sieht in diesem Beispiel dann so aus:

Viel Spaß beim Test!

Ein Gedanke zu „SharePoint 2010 – Newsticker für neue Blogeinträge auf anderen Seiten einbinden

  1. Hi,

    das ist genau die Funktion welche ich gesucht habe!
    leider funktioniert es nicht wie gewüscht. Ich habs mehr als 3 mal kontrolliert, aber beim aktivieren der Ansicht bekomme ich nur:

    Dieses Webpart kann nicht angezeigt werden. Öffnen Sie diese Webseite in einem mit Microsoft SharePoint Foundation kompatiblen HTML-Editor, z. B. in Microsoft SharePoint Designer, um dieses Problem zu behandeln. Falls das Problem weiterhin besteht, wenden Sie sich an Ihren Webserveradministrator.

    Gruß

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.