Content Query Webpart Eigene Inhalte erstellen, eigene Darstellungen erzeugen, Zielgruppen besser erreichen

Content Query Webpart

Eigene Inhalte erstellen, eigene Darstellungen erzeugen, Zielgruppen besser erreichen

Was ist eigentlich das Ziel eines guten Portals? Es soll seine Zielgruppe ansprechen, die richtigen Informationen bereitstellen und Spaß machen. Gerade die ansprechende Darstellung von Inhalten erfordert jedoch oft jede Menge Arbeit, in den meisten Fällen sogar Entwicklungsaufwand.

Dabei gibt es einen sehr einfachen und unkomplizierten Weg Informationen zu bündeln und passen zum eigenen Portal darzustellen. Für genau diese Anforderungen hat uns das SharePoint-Entwicklerteam das Content Query Webpart (Inhaltsabfrage) zur Verfügung gestellt.

Mit dem Content Query Webpart können Inhalte aus verschiedenen Bereichen eines Portals bereitgestellt werden. Und das kann man selbst auch ohne große Entwickler-Fähigkeiten leisten. Legen wir los:

Mein Beispiel wird Nachrichten aus einem Portal auf der Startseite anzeigen. Dabei werden das Erscheinungsdatum, der Titel und ein kurzer Inhaltsabschnitt der sechs aktuellsten Nachrichten dargestellt. Darüber hinaus verweist der jeweilige Titel natürlich per Klick direkt auf die jeweilige Nachrichtenseite.

Folgende Struktur nehmen wir als Ausgangsbasis:

  • Root Sitecollection
    • Sitecollection Nachrichten

In der Sitecollection „Nachrichten“ werden im ersten Schritt ein paar Inhalte (Nachrichten) erzeugt. Ich habe dies mit einem eigenen Seitenlayout getan und in diesem Fall ein Seitenlayout mit dem Namen „Nachrichtenseite“ erstellt. Diese Nachrichtenseite entspricht dem Webseiteninhaltstyp „News“, der untergeordnete Inhaltstyp ist „Willkommensseite“. Der Webseiteninhaltstyp „News“ wurde von mir um die Spalten Nachrichtendatum (NewsDate) und Seitentitel (PageTitle) erweitert. Mein Seitenlayout besteht somit  am Ende aus folgenden Feldern:

Nachrichtendatum (NewsDate) – Typ „Datum und Uhrzeit“
Seitentitel (PageTitle) – Typ „Eine Textzeile“
PublishingPageContent – Typ „HTML wird veröffentlicht“

Wenn ihr zu diesem Schritt (Websiteinhaltstypen & Seitenlayouts) weitere Fragen habt, scheut euch nicht mich anzusprechen.

Es werden also beliebig viele Nachrichtenseiten erstellt, jeweils mit Beispieltexten befüllt und anschließend veröffentlicht. In meinen Nachrichten-Beispielen habe ich einfache Platzhalter-Texte zur Veranschaulichung eingefügt.

Danach wird zurück auf die Startseite der Root Sitecollection navigiert. Die Seite muss nun bearbeitet und das Content Query Webpart (Inhaltsabfrage) hinzugefügt werden. Hierzu ist über den kleinen Pfeil oben rechts im Webpart die Option „Webpart bearbeiten“ auszuwählen.

BIE-A1

Im rechten Bereich öffnet sich eine Toolbar. Unter dem Punkt „Abfrage“ kann man eine Quelle angeben. Wir wählen hier „Elemente von der folgenden Website oder untergeordnete Websites anzeigen“, klicken auf „Durchsuchen“ und wählen die zuvor angelegte Webseite „Nachrichten“ aus. Unter „Listentyp“ wird wiederum die „Bibliothek für Seiten“ ausgewählt, weil ja genau an dieser Stelle unsere Nachrichten liegen. Der „Inhaltstyp“ ist natürlich unser selbst erstellter mit dem Namen „News“.

BIE-A2

Weiter unten findet sich der Bereich „Präsentation“, wo unsere Nachrichten sortiert und die Anzeige-Anzahl begrenzt werden. In unserem Fall sortieren sich die Elemente nach „Nachrichtendatum“ und in absteigender Reihenfolge. Was bedeutet, dass ganz oben immer die neueste Nachricht erscheint. Die Anzahl der anzuzeigenden Elemente begrenzen wir auf sechs und bestätigen alles mit „Übernehmen“ und „OK“.

BIE-A3

Nachdem dieser Schritt abgeschlossen ist, werden im Webpart bereits die Titel unserer sechs Nachrichten angezeigt.

BIE-A4

Nun klicken wir noch einmal auf „Seite bearbeiten“ und exportieren uns das soeben angepasste Webpart.

BIE-A5

Das Webpart wird mittels Notepad oder einem anderen Editor bearbeitet.
Der Zeile

<property name="CommonViewFields" type="string"></property>

fügen wir folgende Werte hinzu:

<property name="CommonViewFields" type="string">PageTitle,Text;NewsDate,Date;PublishingPageContent,RichHTML;</property>

.

BIE-A6

BIE-A7

Das Webpart bekommt schließlich noch einen eindeutigen Namen, ich nenne es „Nachrichten“.

BIE-A8

Als nächstes öffnen wir die Seite im SharePoint-Designer. In der Style Library befindet sich die Datei ItemStyle.xsl im Ordner XSL Style Sheets. Diese Datei dient der optischen Anpassung gezeigter Inhalte. Sie legt eine bestimmte Darstellungsform fest, welche dann in den Webpart-Einstellungen ausgewählt werden kann. In der Datei befinden sich sogenannte „Templates“. Wir werden ein ganz eigenes definieren und zur Verfügung stellen.

Unser Template sieht folgendermaßen aus und wird oben in der Datei hinzugefügt:
(Hier erfolgt die Definition bzw. eindeutige Bezeichnung des Templates)

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

(Hier erfolgt die Definition bzw. eindeutige Bezeichnung des Templates)

   <div id="linkitem" class="ItemActually">
      <table cellpadding="0" cellspacing="0" class="PageTitle">
         <tr>
            <td>				
               <div class="Date">
                  <xsl:value-of select="ddwrt:FormatDate(string(@NewsDate),1031,1)" />

(“Select” liest die gewünschte Websitespalte aus. Darüber hinaus wird hier das Format des Datums definiert.)

                </div>
                <span class="PageTitle" style="display:inline">
                   <xsl:call-template name="OuterTemplate.CallPresenceStatusIconTemplate" />
	  	      <a href="/{@FileRef}">
                        <xsl:value-of select="@PageTitle" />

(Hier wird über das Auslesen der Daten hinaus noch ein Link zum Element definiert)

                 </a>
   	         </span>
	         <div class="Content">
                  <xsl:value-of select="substring(@PublishingPageContent, 1, 200)" disable-output-escaping="yes" />

…(Der Inhaltstext wird an dieser Stelle auf eine Zeichenanzahl von 200 begrenzt.)

	</div>
             </td>
          </tr>
       </table>
    </div>
 </xsl:template>

Sind diese Definitionen erfolgt, wird die Datei gespeichert und eingecheckt bzw. veröffentlicht. Anschließend wechseln wir wieder zurück auf die Startseite der Root-Webseite und bearbeiten diese erneut.
Das Webpart, welches wir vorhin eingefügt, bearbeitet und exportiert haben, können wir nun wieder löschen. Stattdessen fügen wir ein neues Webpart hinzu – natürlich unser zuvor hochgeladenes „Nachrichten“- Webpart.

Im kleinen rechten Menü wählen wir wieder „Webpart bearbeiten“ und begeben uns erneut in die Toolbar, um, zusätzlich zu unseren Voreinstellungen im Webpart, unser erstelltes Template auszuwählen. Dies geschieht unter dem Menüpunkt „Präsentation“ im Abschnitt „Formate“. Die Gruppenformatvorlage bleibt auf „Standard“, beim Format für Elemente wird unser Template „Nachrichten“ ausgewählt. Die Webpart-Einstellungen werden übernommen und gespeichert und die Seite anschließend ebenso gespeichert.

BIE-A9

Das Ergebnis sieht nun folgendermaßen aus:

BIE-AA

Durch die selbst definierten Klassen im Template kann die Nachrichtenübersicht nun per CSS frei gestaltet werden. Ich habe zum Beispiel den Titel fett gedruckt dargestellt.

Viel Spaß beim Ausprobieren!