Befehle des Menübands überspringen
Zum Hauptinhalt wechseln
Lösungen von einem Team

Das Inhaltsabfrage- (Content Query) Webpart des Microsoft Office SharePoint Server 2007 ist für viele Websites höchst nützlich. Allerdings gibt es ein kleines Problem damit: Wenn es benutzt wird, um Inhalte einer SharePoint-Liste (und nicht einer Dokumentbibliothek) zu durchsuchen, erzeugt es in seiner Ausgabe leider Links, die auf eine Seite namens CopyUtil.aspx verweisen - und die funktioniert nicht für anonyme Benutzer. Was also tun, wenn man dieses Webpart für eine Liste in einer öffentlichen Website verwenden möchte?

An vielen Stellen im Web wird gesagt, dass man die Ausgabe des Inhaltsabfrage-Webparts steuern kann, indem man eine Datei namens ContentQueryMain.xsl bearbeitet. Nur fand sich leider nirgends (einschließlich dem Microsoft Support) eine genaue Angabe, was man denn nun genau ändern soll, damit es funktioniert.

Auch wenn hier keine allgemeingültige Lösung gezeigt werden kann, so funktioniert folgendes Verfahren doch wenigstens für den Fall, dass das Webpart nur für die Abfrage einer einzigen Liste in einer Websitesammlung verwendet werden soll. Es können durchaus an vielen Stellen in der Websitesammlung Inhaltsabfrage-Webparts für diese eine Liste angebracht werden, nur muss leider die URL zur Liste hart kodiert werden.

Folgende Vorgehensweise führt unter diesen Voraussetzungen zum Erfolg:

  1. Bearbeiten Sie die Datei ContentQueryMain.xsl, z. B. mit dem Microsoft Office SharePoint Designer 2007 (die Datei muss ggf. aus- und wieder eingecheckt werden).
     
  2. Suchen Sie in dieser Datei folgende Codestelle:

    <xsl:template name="OuterTemplate.GetSafeLink">
     
  3. Ersetzen Sie folgende Codestelle:

    <xsl:value-of select="concat('/_layouts/CopyUtil.aspx?Use=id&amp;Action=dispform&amp;ItemId=',
    @ID,'&amp;ListId=',@ListId,'&amp;WebId=',@WebId,'&amp;SiteId=',$SiteId)"/>

    durch folgenden Code:

    <xsl:value-of select="concat('/Lists/NameDerListe/DispForm.aspx?ID=',@ID)"/>

Dabei steht /Lists/NameDerListe für die URL der Liste. Da diese fest in den Code geschrieben werden muss (uns ist kein Verfahren bekannt, die URL der Liste hier in Form eines Platzhalters einzutragen), funktioniert das Webpart beim Abfragen von Listen jetzt nur noch für diese eine Liste. Es funktioniert aber unverändert beim Durchsuchen von Dokumentbibliotheken, insbesondere Webseiten. Aber immerhin können Sie das Inhaltsabfrage-Webpart jetzt zum Abfragen einer Liste für anonyme Benutzer verwenden.

Voilà.