SharePoint Development Basics: Site Definitions–Teil 2

Von Andreas Aschauer Autor Feed 12. April 2011 16:39

Im ersten Teil der SharePoint Development Basics haben wir eine einfache Site Definition erstellt und auch schon globale Konfigurationen wie die Navigationsleisten und aktivierten Features inklusive Feature-Properties vorgenommen.

Nun gehts weiter, die Site mit Inhalten zu befüllen – im Konkreten sind das WebPartPages und die dazugehörigen WebParts sowie beliebige weitere Dateien, welche die Site ausmachen (Bilder, Skripts, Infopath Formulare,..).

Um Dateien in SharePoint zur Verfügung zu stellen, werden Modules verwendet. Ein Module ist ein Element eines Features (oder einer SiteDefinition) und gibt eine oder mehrere Dateien an welche in eine gewisse Liste oder Bibliothek und somit in die SharePoint Content Datenbank wandern.

Ein einfaches Modul sieht in XML folgendermassen aus.

   1: <Module Name="DefaultBlank" Url="" Path="">
   2:     <File Url="default.aspx"/>
   3: </Module>

Abbildung 1 zeigt die physische Struktur der dazugehörigen Dateien im Visual Studio Solution Explorer. Die Datei default.aspx liegt im selben Verzeichnis wie onet.xml in der das Module definiert ist. Mittels des Path Attributs kann ein abweichender Pfad (relativ von onet.xml / feature.xml) angegeben werden. Das URL Attribute definiert den Pfad und Namen, so wie die Datei in SharePoint landet. Gibt man hier einen Pfad an werden entsprechende Unterordner erstellt.

image

Das Modul lädt die Datei default.aspx in die SharePoint Farm, und zwar in den Root Folder der SiteCollection, sodass dies die neue Startseite wird - Standardmässig ist immer die ASPX Datei unter ~sitecollection\default.aspx die Startseite in SharePoint. Solange das “Publishing Feature” nicht aktiviert ist. Dann werden nämlich alle Seiten aus der “Pages” Bibliothek geladen, da sie dort versioniert sind.

Das folgende Snippet zeigt wie man Dateien in Bibliothken lädt und auch eventuelle Properties mitgiebt – hier am Beispiel einer Masterpage, welche in die spezielle “Masterpages” Catalog Bibliothek geladen wird.

   1: <!-- Masterpage -->
   2: <Module Name="MasterPages" Url="_catalogs/masterpage" Path="" RootWebOnly="TRUE">
   3:     <File Url="MaPortal_Master.master" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE">
   4:        <Property Name="ContentType" Value="$Resources:cmscore,contenttype_masterpage_name;" />
   5:        <Property Name="Title" Value="$Title$" />
   6:        <Property Name="PublishingPreviewImage" Value="$PublishingPreviewImage$" />
   7:        <Property Name="MasterPageDescription" Value="$MasterPageDescription$" />
   8:      </File>
   9: </Module>

Wichtig, wenn man Dateien in Bibliotheken lädt ist, darauf zu achten, dass man Sprach-Unabhängig ist. Die URLs vieler Bibliotheken sind lokalisiert, die Pages Bibiliothek heisst auf Deutsch Seiten und hat eine entsprechende unterschiedliche URL. Diese Werte lassen sich aus den Resourcendateien laden. Möchte man die URL von Listen lokalisieren sieht das so aus:

   1: $Resources:core,lists_Folder;

Dies führt auf Englischen Systemen zur Zeichenkette “/Lists” auf Deutschen zu “/Listen”.

Zu beachten hierbei ist auch das Type Attribut. ALLE Inhalte von Bibliotheken MÜSSEN “GhostableInLibrary” sein, das bedeutet sie können in die Content DB wandern. Vergisst man das Attribut, erscheint die Datei einfach nicht.

Ein Modul fasst also eine oder mehrere Dateien zusammen, welche zur Verfügung stehen sollen.

Noch interessanter ist die Möglichkeit, gleich WebParts auf diesen Seiten zu platzieren.  Die Seite default.aspx soll ein Custom WebPart in der Webpartzone “Top” anzeigen. Dazu reicht folgendes XML Snippet

   1: <!-- Announcement WebPart-->
   2:         <AllUsersWebPart ID="AnnouncementOverview" WebPartZoneID="Top" WebPartOrder="1">
   3:           <![CDATA[ 
   4:             <webParts>
   5:               <webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
   6:               <metaData>
   7:                 <type name="MaPortal.Features.Common.WebParts.Announcements.Announcements, MaPortal.Features, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7e79f463b7614c02" />
   8:                 <importErrorMessage>Cannot import this Web Part.</importErrorMessage>
   9:               </metaData>
  10:               <data>
  11:                 <properties>
  12:                   <property name="Title" type="string">Ankündigungen</property>
  13:                   <property name="Description" type="string">Zeigt Globale, Bereichs- und Abteilungsweite Ankündigen an</property>
  14:                 </properties>
  15:               </data>
  16:             </webPart>
  17:             </webParts>
  18:           ]]>
  19:         </AllUsersWebPart>

Woher kommt das Markup?? Ganz einfach – im WebPart Katalog in der SharePoint WebUI das entsprechende WebPart wählen > View XML – fertig. Das Markup kann direkt in eine CDATA Sektion kopiert werden, wie oben ersichtlich.

Genug zu den SiteDefinitions – sie sind einfach cool und praktisch und man sollte spätestens jetzt am Ende dieses Artikels erkannt haben, wie sehr sie ein Deployment vereinfachen. Sehr viel Code aus “Feature Event Handlers” wird damit verschwinden und auch das eine oder andere selbst gebastelte Skript.

Weiter gehts im nächsten Teil mit InfoPath Forms!

Happy SharePoint’ing!

Comments (3) -

>

4/12/2011 4:59:25 PM #

Coole Serie, weiter so!

El guchero loco Argentinien

>

4/13/2011 11:16:07 AM #

Danke sehr, das motiviert!

Andreas Aschauer Austria

>

10/18/2012 10:54:20 AM #

Hi, kein schlechter beitrag aber eine frage hätte ich noch gibt es auch eine möglichkeit VisualWebparts hinzu zu fügen in SP2010 Kommt bei einem solchen versuch die Fehlermeldung:

"Webpartfehler: Die Klasse Webparts.VWPVertriebsregion.VWPVertriebsregion ist nicht von der Klasse Microsoft.SharePoint.WebPartPages.WebPart abgeleitet und kann daher nicht in eine Webpartzone importiert oder in einem Webpartzonen-Steuerelement verwendet werden."

Währe für jede hilfe dankbar

Ten Eniunlsl Deutschland

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading

Datenschutzhinweis: Sie stimmen durch "Kommentar speichern" der Speicherung Ihrer Angaben durch Microsoft Österreich für die Beantwortung der Anfrage zu. Sie erhalten dadurch keine unerwünschten Werbezusendungen. Ihre Emailadresse wird auf Ihren Wunsch dazu verwendet Sie über neue Kommentare zu informieren.

Microsoft respektiert den Datenschutz. Datenschutz & Cookies

Entwickler Wettbewerbe:

Wettbewerbe

Entwickler Events:

Developer Events

App für Windows 8, Windows Phone oder/und Azure? Diese Events zeigen Dir, wie es geht:

Mehr Information

Aktuelle Downloads

Visual Studio Downloads
 
Windows Azure Free Trial
Instagram
CodeFest.at on Facebook

Datenschutz & Cookies · Nutzungsbedingungen · Impressum · Markenzeichen
© 2013 Microsoft. Alle Rechte vorbehalten · BlogEngine.NET 2.7.0.0 · Diese Website wird für Microsoft von atwork gehostet.
powered by atwork