Gewusst wie: Hinzufügen eines Inhaltstyps zu einer Website

Letzte Änderung: Montag, 1. November 2010

Gilt für: SharePoint Foundation 2010

Verfügbar in SharePoint Online

Sie können Inhaltstypen angeben, die in eine benutzerdefinierte Websitedefinitionskonfiguration eingeschlossen werden sollen, sodass jedes Mal, wenn ein Benutzer eine Website von diesem Typ erstellt, die Inhaltstypen auf der Website standardmäßig von Microsoft SharePoint Foundation zur Verfügung gestellt werden. Nachdem eine Website erstellt wurde, können Sie Inhaltstypen als Teil eines Features hinzufügen.

Registrieren von Inhaltstypen in einer Websitedefinitionskonfiguration

Wenn Sie einen Inhaltstyp angeben möchten, der in einer benutzerdefinierten Websitedefinitionskonfiguration enthalten sein soll, müssen Sie zuerst den Inhaltstyp als ein separates Feature erstellen und dann in Collaborative Application Markup Language (CAML)-Markup für die Websitedefinitionskonfiguration in der Datei Onet.xml der Websitedefinition auf dieses Feature verweisen. Wenn dann ein Benutzer eine neue Website dieses Typs erstellt, ist der Inhaltstyp standardmäßig in der Inhaltstypauflistung der Website enthalten.

VorsichtVorsicht

Das Ändern der Datei Onet.xml für einen der integrierten Websitetypen von SharePoint Foundation wird nicht unterstützt. Daher können Sie das folgende Verfahren nur für benutzerdefinierte Websitetypen verwenden. Weitere Informationen zum Erstellen benutzerdefinierter Websitedefinitionskonfigurationen finden Sie unter Gewusst wie: Erstellen einer benutzerdefinierten Websitedefinition und -konfiguration.

So geben Sie einen Inhaltstyp in einer Websitedefinitionskonfiguration an

  1. Erstellen Sie den Inhaltstyp als separates Feature.

    Weitere Informationen finden Sie unter Verwenden von Features.

  2. Verweisen Sie auf dieses Feature in dem Configuration-Element (in der Datei Onet.xml), durch das der benutzerdefinierte Websitetyp definiert wird:

    1. Öffnen Sie die Datei Onet.xml in %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates\Websitetyp\XML, wobei Websitetyp der Name der benutzerdefinierten Websitedefinition ist.

    2. Fügen Sie im Configuration-Element einen Verweis auf das Inhaltstypfeature im Element SiteFeatures oder WebFeatures hinzu. Das Feature identifizieren Sie anhand der GUID. Der folgende Code ist ein Beispiel dafür.

      <SiteFeatures>
        <Feature ID="00BFEA71-1C5E-4A24-B310-BA51C3EB7A57" />
        <Feature ID="695B6570-ACDC-4A8E-8545-26EA7FC1D162" />
      </SiteFeatures>
      <WebFeatures>
        <Feature ID="00BFEA71-4EA5-48D4-A4AD-7EA5C011ABE5" />
        <Feature ID="00BFEA71-E717-4E80-DEAF-D0C71B360101" />
      </WebFeatures>
      

      Weitere Informationen zum Unterschied zwischen diesen beiden Elementen finden Sie unter SiteFeatures-Element (Website) und WebFeatures-Element (Website).

Hinzufügen von Inhaltstypen zu einer vorhandenen Website

Sie können Inhaltstypen einer Website hinzufügen, indem Sie entweder deklaratives XML oder das SharePoint Foundation-Objektmodell verwenden. Deklaratives XML verwendet das Inhaltstyp-Definitionsschema zum Definieren von Inhaltstypen. Inhaltstypdefinitionen werden in der Elementmanifestdatei eines Features deklariert, und die Inhaltstypen werden einer Website hinzugefügt, wenn das Feature aktiviert wird.

Wenn Sie das SharePoint Foundation-Objektmodell verwenden, muss die SPFeatureReceiver-Klasse eine Unterklasse aufweisen. Platzieren Sie den Code zum Erstellen der Inhaltstypen und zum Hinzufügen der Inhaltstypen zur Website in der FeatureActivated-Methode.

In der Regel ist das Schreiben von deklarativem XML einfacher. Deklaratives XML bietet jedoch im Allgemeinen weniger Flexibilität als das Objektmodell, das Zugriff auf die Funktionen im Ganzen Microsoft .NET Framework besitzt und für das zur Laufzeit ein Debug ausgeführt werden kann. Beide Methoden werden durch Vorlagen unterstützt, die in SharePoint-Entwicklungstools in Microsoft Visual Studio 2010 bereitgestellt werden.

So fügen Sie einen Inhaltstyp mithilfe von deklarativem XML hinzu

  1. Erstellen Sie ein Feature.

    Weitere Informationen finden Sie unter Verwenden von Features.

  2. Fügen Sie dem Feature eine Elementmanifestdatei hinzu.

  3. Fügen Sie ein Elements-Element als XML-Stammelement im Elementmanifest hinzu.

  4. Fügen Sie ein ContentType-Element als untergeordnetes Element des Elements-Elements hinzu.

    HinweisHinweis

    Der für das ID-Attribut verwendete Wert besitzt ein sehr spezifisches Format. Weitere Informationen finden Sie unter Inhaltstyp-IDs.

  5. Fügen Sie bei Bedarf Spaltenverweise hinzu. Weitere Informationen finden Sie unter Gewusst wie: Verweisen auf eine Spalte in einem Inhaltstyp.

  6. Fügen Sie bei Bedarf eine DocumentTemplate-Definition hinzu.

    HinweisHinweis

    Die Datei, auf die im DocumentTemplate-Element verwiesen wird, muss auf der Website bereits vorhanden oder im Feature enthalten sein. Weitere Informationen finden Sie unter Gewusst wie: Bereitstellen einer Datei.

  7. Beenden Sie die Inhaltstypdefinition bei Bedarf. Weitere Informationen finden Sie unter Inhaltstypdefinitionen.

Beispiel

Das folgende Beispiel zeigt das Elementmanifest für ein Feature. Wenn das Feature aktiviert wird, wird das Elementmanifest zum Erstellen der Websitespalte verwendet, und die Spalte wird der Websitespaltenauflistung für die aktuelle Website hinzugefügt. Dann wird das Manifest zum Erstellen eines Websiteinhaltstyps verwendet, der der Inhaltstypauflistung der aktuellen Website hinzugefügt wird.

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="https://schemas.microsoft.com/sharepoint/">

  <!-- Create a site column. -->

  <Field ID="{060E50AC-E9C1-4D3C-B1F9-DE0BCAC300F6}"
         Name="Amount"
         DisplayName="Amount"
         Type="Currency"
         Decimals="2"
         Min="0"
         Required="FALSE"
         Group="Financial Columns" />

  <!-- Create a site content type that uses the column. -->

  <!-- Parent ContentType: Document (0x0101) -->
  <ContentType ID="0x0101000728167cd9c94899925ba69c4af6743e"
               Name="Financial Document"
               Group="Financial Content Types"
               Description="Base financial content type"
               Version="0">
    <FieldRefs>
      <FieldRef ID="{060E50AC-E9C1-4D3C-B1F9-DE0BCAC300F6}" Name="Amount" DisplayName="Amount" Required="FALSE"/>
    </FieldRefs>
  </ContentType>

</Elements>

So fügen Sie einen Inhaltstyp mithilfe von Servercode hinzu

  1. Erstellen Sie eine Featureempfängerklasse, die von der SPFeatureReceiver-Klasse erbt.

  2. Verwenden Sie in der FeatureActivated-Methode die ContentTypes-Eigenschaft, um auf die Inhaltstypauflistung für die Website zuzugreifen.

    Von dieser Eigenschaft wird ein SPContentTypeCollection-Objekt zurückgegeben.

  3. Erstellen Sie ein SPContentType-Objekt. Weitere Informationen finden Sie unter Erstellen von Inhaltstypen.

  4. Verwenden Sie die Add-Methode zum Hinzufügen des SPContentType-Objekts zur Inhaltstypauflistung der Website.

Beispiel

Das folgende Beispiel zeigt die Implementierung der FeatureActivated-Methode in einer Unterklasse der SPFeatureReceiver-Klasse. Wenn das Feature aktiviert wird, wird durch Code in der FeatureActivated-Methode die Websitespalte erstellt und der Websitespaltenauflistung für die aktuelle Website hinzugefügt. Dann wird ein Inhaltstyp vom Code erstellt, der vom Dokument-Inhaltstyp erbt. Dieser Inhaltstyp wird der Inhaltstypauflistung auf der aktuellen Website hinzugefügt.

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    SPSite siteCollection = (SPSite)properties.Feature.Parent;
    SPWeb site = siteCollection.OpenWeb();

    /* Create a site column. */

    string amountFieldName = site.Fields.Add("Amount", SPFieldType.Currency, false);
    SPFieldCurrency amountField = (SPFieldCurrency)site.Fields.GetFieldByInternalName(amountFieldName);
    amountField.Group = "Financial Columns";
    amountField.DisplayFormat = SPNumberFormatTypes.TwoDecimals;
    amountField.MinimumValue = 0;
    amountField.Update();

    /* Create a site content type that uses the column. */

    // Get a content type to be the parent of a new Financial Document content type.
    SPContentType documentCType = site.AvailableContentTypes[SPBuiltInContentTypeId.Document];

    // Create the Financial Document content type.
    SPContentType financialDocumentCType = new SPContentType(documentCType, site.ContentTypes, "Financial Document");
    site.ContentTypes.Add(financialDocumentCType);

    // Note: A content type is not initialized until after it is added.
    financialDocumentCType = site.ContentTypes[financialDocumentCType.Id];
    financialDocumentCType.Group = "Financial Content Types";

    // Add the Amount column. Child content types inherit the column.
    SPFieldLink amountFieldRef = new SPFieldLink(amountField);
    financialDocumentCType.FieldLinks.Add(amountFieldRef);

    // Commit changes.
    financialDocumentCType.Update();

    site.Dispose();
    siteCollection.Dispose();
}
Public Overrides Sub FeatureActivated(ByVal properties As SPFeatureReceiverProperties)
    Dim siteCollection As SPSite = DirectCast(properties.Feature.Parent, SPSite)
    Dim site As SPWeb = siteCollection.OpenWeb()
    
    ' Create a site column. 
    
    
    Dim amountFieldName As String = site.Fields.Add("Amount", SPFieldType.Currency, False)
    Dim amountField As SPFieldCurrency = DirectCast(site.Fields.GetFieldByInternalName(amountFieldName), SPFieldCurrency)
    amountField.Group = "Financial Columns"
    amountField.DisplayFormat = SPNumberFormatTypes.TwoDecimals
    amountField.MinimumValue = 0
    amountField.Update()
    
    ' Create a site content type. 
    
    
    ' Get a content type to be the parent of a new Financial Document content type.
    Dim documentCType As SPContentType = site.AvailableContentTypes(SPBuiltInContentTypeId.Document)
    
    ' Create the Financial Document content type.
    Dim financialDocumentCType As New SPContentType(documentCType, site.ContentTypes, "Financial Document")
    site.ContentTypes.Add(financialDocumentCType)
    
    ' Note: A content type is not initialized until after it is added.
    financialDocumentCType = site.ContentTypes(financialDocumentCType.Id)
    financialDocumentCType.Group = "Financial Content Types"
    
    ' Add the Amount column. Child content types inherit the column.
    Dim amountFieldRef As New SPFieldLink(amountField)
    financialDocumentCType.FieldLinks.Add(amountFieldRef)
    
    ' Commit changes.
    financialDocumentCType.Update()
    
    site.Dispose()
    siteCollection.Dispose()
End Sub

Siehe auch

Aufgaben

Vorgehensweise: Hinzufügen eines Inhaltstyps zu einer Liste

Konzepte

Einführung zu Inhaltstypen

Website- und Listeninhaltstypen

Inhaltstypdefinitionen