Partager via


Procédure : ajouter un type de contenu à un site

Dernière modification : lundi 1 novembre 2010

S’applique à : SharePoint Foundation 2010

Disponible dans SharePoint Online

Vous pouvez spécifier les types de contenu à inclure dans une configuration de définition de site personnalisée, afin que chaque fois qu’un utilisateur crée un site de ce type, Microsoft SharePoint Foundation rende les types de contenu disponibles sur le site par défaut. Après qu’un site a été créé, vous pouvez ajouter des types de contenu dans le cadre d’une fonctionnalité.

Inscription des types de contenu dans une configuration de définition de site

Pour spécifier un type de contenu à inclure dans une configuration de définition de site personnalisée, vous créez le type de contenu en tant que fonctionnalité distincte, puis vous référencez cette fonctionnalité en langage Langage CAML (Collaborative Application Markup Language) au sein de la configuration de définition de site dans le fichier Onet.xml de la définition de site. Ensuite, lorsqu’un utilisateur crée un site de ce type, le type de contenu est inclus par défaut dans la collection de types de contenu du site.

Note AttentionAttention

La modification du fichier Onet.xml n’est prise en charge pour aucun des types de sites intégrés de SharePoint Foundation ; par conséquent, vous pouvez utiliser la procédure suivante uniquement pour des types de sites personnalisés. Pour plus d’informations sur la création de configurations de définition de site personnalisée, voir Procédure : créer une définition de site personnalisée et une configuration.

Pour spécifier un type de contenu dans une configuration de définition de site

  1. Créez le type de contenu en tant que fonctionnalité distincte.

    Pour plus d’informations, voir Utilisation des fonctionnalités.

  2. Référencez cette fonctionnalité dans l’élément Configuration (dans le fichier Onet.xml) qui définit votre type de site personnalisé :

    1. Ouvrez le fichier Onet.xml dans %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates\type_site\XML, où type_site est le nom de la définition de site personnalisée.

    2. Dans l’élément Configuration, ajoutez une référence à la fonctionnalité du type de contenu dans l’élément SiteFeatures ou l’élément WebFeatures. Vous identifiez la fonctionnalité par son GUID. Voici un exemple.

      <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>
      

      Pour plus d’informations sur les différences entre ces deux éléments, voir SiteFeatures, élément (Site) et WebFeatures, élément (Site).

Ajout de types de contenu à un site existant

Vous pouvez ajouter des types de contenu à un site en utilisant du XML déclaratif ou le modèle objet SharePoint Foundation. Le XML déclaratif utilise le schéma de définition de type de contenu pour définir les types de contenu. Les définitions de type de contenu sont déclarées dans le fichier manifeste d’élément d’une fonctionnalité et les types de contenu sont ajoutés à un site lorsque la fonctionnalité est activée.

Lorsque vous utilisez le modèle objet SharePoint Foundation, vous devez sous-classer la classe SPFeatureReceiver. Placez le code qui crée vos types de contenu et qui les ajoute au site dans la méthode FeatureActivated.

En règle générale, il est plus facile d’écrire du code XML déclaratif. Toutefois, le code XML déclaratif offre généralement moins de souplesse que le modèle objet, qui a accès à toutes les fonctionnalités de Microsoft .NET Framework et qui peut être débogué au moment de l’exécution. Les deux approches sont prises en charge par les modèles fournis avec les Outils de développement SharePoint dans Microsoft Visual Studio 2010.

Pour ajouter un type de contenu avec du code XML déclaratif

  1. Créez une fonctionnalité.

    Pour plus d’informations, voir Utilisation des fonctionnalités.

  2. Ajoutez un fichier manifeste d’élément à la fonctionnalité.

  3. Ajoutez un élément Elements en guise d’élément XML racine dans le manifeste d’élément.

  4. Ajoutez un élément ContentType en guise d’enfant de l’élément Elements.

    Notes

    La valeur que vous utilisez pour l’attribut ID possède un format très spécifique. Pour plus d’informations, voir ID de type de contenu.

  5. Ajoutez les références de colonne souhaitées. Pour plus d’informations, voir Procédure : référencer une colonne dans un type de contenu.

  6. Ajoutez une définition DocumentTemplate si vous le souhaitez.

    Notes

    Le fichier référencé par l’élément DocumentTemplate doit déjà exister sur le site ou doit être inclus avec la fonctionnalité. Pour plus d’informations, voir Procédure : mettre en service un fichier.

  7. Complétez la définition de type de contenu comme souhaité. Pour plus d’informations, voir Définitions de type de contenu.

Exemple

L’exemple suivant est le manifeste d’élément pour une fonctionnalité. Lorsque la fonctionnalité est activée, le manifeste d’élément est utilisé pour créer une colonne de site et l’ajouter à la collection de colonnes de site sur le site actuel. Ensuite, le manifeste est utilisé pour créer un type de contenu de site et l’ajouter à la collection de types de contenu sur le site actuel.

<?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>

Pour ajouter un type de contenu avec du code serveur

  1. Créez une classe de récepteur de fonctionnalités qui hérite de la classe SPFeatureReceiver.

  2. Dans la méthode FeatureActivated, utilisez la propriété ContentTypes pour accéder à la collection de types de contenu pour le site.

    Cette propriété retourne un objet SPContentTypeCollection.

  3. Créez un objet SPContentType. Pour plus d’informations, voir Création de types de contenu.

  4. Utilisez la méthode Add pour ajouter l'objet SPContentType à la collection de types de contenu du site.

Exemple

L’exemple suivant montre l’implémentation de la méthode FeatureActivated dans une sous-classe de la classe SPFeatureReceiver. Lorsque la fonctionnalité est activée, du code dans la méthode FeatureActivated crée une colonne de site et l’ajoute à la collection de colonnes de site sur le site actuel. Ensuite, le code crée un type de contenu qui hérite du type de contenu Document et l’ajoute à la collection de types de contenu sur le site actuel.

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

Voir aussi

Tâches

Procédure : ajouter un type de contenu à une liste

Concepts

Introduction aux types de contenu

Types de contenu de liste et de site

Définitions de type de contenu