Partager via


Bloc de construction : types de contenu

Dernière modification : vendredi 27 mai 2011

S’applique à : SharePoint Foundation 2010

Dans cet article
Modèle objet des types de contenu
XML utilisé pour les types de contenu
Zones liées aux types de contenu
Informations complémentaires sur les types de contenu

Disponible dans SharePoint Online

Un type de contenu définit les métadonnées, flux de travail et autres comportements d’une catégorie d’éléments d’une liste ou bibliothèque de documents SharePoint Foundation. Par exemple, vous pourriez définir un type de contenu Note de frais de façon à ce que les notes de frais soient toujours créées à partir d’un modèle Microsoft Excel particulier et qu’un flux de travail d’approbation démarre toujours automatiquement à chaque émission d’une nouvelle note de frais. Si vous ajoutez ensuite le type de contenu à une bibliothèque de documents, vos utilisateurs peuvent créer et soumettre une nouvelle note de frais en choisissant simplement Note de frais dans le menu attaché au bouton Nouveau document de la bibliothèque.

Un avantage clé des types de contenu est qu’ils vous permettent de gérer le schéma sous-jacent d’une catégorie particulière d’informations d’une façon centralisée et réutilisable. Les types de contenu sont définis au niveau site, indépendamment de toute liste ou bibliothèque de documents du site. Vous pouvez utiliser le même type de contenu sur plusieurs listes ou bibliothèques de documents différentes à travers la totalité d’un site ; dans certains cas, vous pouvez utiliser un type de contenu sur les listes et les bibliothèques à travers la totalité d’une collection de sites. Inversement, vous pouvez aussi utiliser plusieurs types de contenu différents sur la même liste ou la même bibliothèque de documents. Quand une liste ou une bibliothèque de documents prend en charge plusieurs types de contenu, chaque type de contenu figure sur le bouton Nouveau et chacun peut avoir un ensemble unique de colonnes, flux de travail et autres comportements.

La disponibilité d’un type de contenu est appelée étendue. L’étendue d’un type de contenu inclut toujours le site où le type de contenu est défini, plus chaque enfant de ce site. Par exemple, imaginez une hiérarchie de sites dans laquelle un site parent nommé Europe possède des sites enfants nommés Italie, France et Allemagne. Les nouveaux types de contenu ajoutés au site parent Europe peuvent s’appliquer aux listes ou aux bibliothèques de documents à travers les sites Europe, Italie, France et Allemagne. Comme l’étendue se développe vers le bas via la hiérarchie des sites, l’ajout d’un type de contenu au site racine d’une collection de sites permet que le type de contenu soit accessible aux listes et aux bibliothèques via la collection de sites.

Les types de contenu sont définis à l’aide des principes de l’héritage. Vous ne créez jamais un type de contenu ex nihilo, mais vous sélectionnez toujours un type de contenu existant comme base du nouveau type de contenu que vous créez. Lorsque vous fondez un nouveau type de contenu sur un type de contenu existant, le nouveau type de contenu hérite des métadonnées, des flux de travail et autres comportements du type de contenu parent. Cela vous permet de définir des types de contenu de base tout comme vous définiriez des classes de base. Par exemple, vous pouvez définir un type de contenu appelé Document financier, aux caractéristiques communes à tous les documents financiers de votre entreprise. Vous pouvez alors utiliser Document financier comme base de deux nouveaux types de contenu, Facture et Bon de commande. Les nouveaux types de contenu héritent des métadonnées et des comportements de Document financier, si bien que vous n’avez à définir les éléments communs qu’une seule fois, dans le type de contenu parent.

Vous pouvez voir ce modèle à l’œuvre si vous regardez la galerie Types de contenu de site sous Paramètres du site. Le type de contenu le plus élémentaire qui puisse s’appliquer à une liste est appelé Élément. Les types de contenu Annonce, Contact, Tâche et bien d’autres encore, héritent d’Élément. De même, le type de contenu le plus élémentaire qui s’applique à une bibliothèque de documents est appelé Document. Les types de contenu Image, Formulaire et Page Wiki héritent tous de Document.

Notez que lorsque vous créez un type de contenu, vous devez décider si vous prévoyez de l’utiliser avec les listes ou avec les bibliothèques de documents. Les seuls types de contenu qui puissent s’appliquer à une bibliothèque de documents sont les types de contenu qui héritent de Document. En outre, les seuls types de contenu qui puissent s’appliquer à une liste sont ceux qui héritent d’Élément, et non de Document.

Une entorse importante par rapport aux principes d’héritage est que les modifications apportées aux types de contenu parent ne sont pas automatiquement répercutées sur les types de contenu dérivés. La propagation des modifications s’effectue d’une manière similaire à celle dont les autorisations de sécurité sont propagées à la hiérarchie du système de fichiers NFTS. Pour plus d’informations, voir Mise à jour de types de contenu enfants.

Modèle objet des types de contenu

SharePoint Foundation possède un modèle objet élaboré qui permet de créer, rechercher, ajouter, mettre à jour ou supprimer les types de contenu. Si vous écrivez le code qui s’exécutera sur le serveur, vous utiliserez les membres de l’espace de noms Microsoft.SharePoint. La plupart des types de cet espace de noms possèdent des équivalents dans l’espace de noms Microsoft.SharePoint.Client que vous pouvez utiliser lors de l’écriture du code qui s’exécutera sur le client.

Recherche des types de contenu

Vous pouvez connaître les types de contenu disponibles et utilisables à une étendue donnée, en accédant à la propriété AvailableContentTypes d’un objet SPWeb (serveur) ou Web (client). Les deux propriétés retournent une collection en lecture seule d’objets SPContentType (serveur) ou ContentType (client). La collection est énumérable et possède également plusieurs indexeurs, dont le nom du type de contenu.

Vous pouvez connaître les types de contenu qui ont été appliqués à une liste ou à une bibliothèque de documents en accédant à la propriété ContentTypes d’un objet SPList du code serveur ou à la même propriété d’un objet List du code client. Cette propriété retourne une collection énumérable et indexée, mais dans ce cas, la collection est accessible en écriture.

Vous devez être conscient que lorsqu’un type de contenu de site est appliqué à une liste ou une bibliothèque de documents, ce n’est pas à proprement parler le type de contenu de site qui est ajouté, mais une copie du type de contenu de site. En outre, la copie de la liste du type de contenu possède un identificateur de type de contenu différent. Il est dérivé de l’identificateur du type de contenu de site, mais il ne s’agit pas du même identificateur. Autrement dit, il se pourrait que vous ne puissiez pas extraire le type de contenu que vous souhaitez en utilisant un identificateur de type de contenu comme index d’une collection. À la place, vous devez utiliser la méthode BestMatch de la collection. Pour plus d’informations, voir Types de contenu de liste et de site et ID de type de contenu.

Si vous souhaitez savoir où un type de contenu de site est utilisé, que ce soit sur une liste ou comme parent d’un autre type de contenu de site, vous pouvez appeler la méthode statique GetUsages(SPContentType), membre de la classe SPContentTypeUsage.

Création de types de contenu

Vous pouvez créer et déployer un type de contenu personnalisé dans le cadre d’une fonctionnalité. Pour plus d’informations sur les fonctionnalités, voir Bloc de construction : fonctionnalités.

Placez le code de création du type de contenu dans la méthode FeatureActivated(SPFeatureReceiverProperties) d’un objet SPFeatureReceiver. Si votre type de contenu utilise de nouvelles colonnes de site, vous devez créer et traiter les colonnes en premier, avant de les référencer dans le type de contenu. Pour plus d’informations sur les colonnes, voir Bloc de construction : Colonnes et types de champs.

Pour créer un objet de type de contenu, vous appelez l’un des constructeurs de la classe SPContentType. Un paramètre des deux constructeurs est un objet SPContentTypeCollection. Il s’agit de l’objet retourné dans la propriété ContentTypes de l’objet SPWeb du site où le type de contenu sera créé. Même si vous spécifiez une collection de types de contenu de site dans le constructeur, le constructeur ne s’ajoute pas à la collection. Vous devez procéder à cet ajout avec un appel distinct de la méthode Add de la même collection.

Ajout et suppression de types de contenu

Pour appliquer un type de contenu à une liste ou à une bibliothèque de documents, vous devez d’abord définir la propriété AllowContentTypes de la liste avec la valeur true, puis appeler la méthode Add de la collection retournée dans la propriété ContentTypes de l’objet SPList (serveur) ou List (client).

Pour ajouter un nouveau type de contenu à un site, appelez la méthode Add de la collection retournée dans la propriété ContentTypes d’un objet SPWeb (serveur) ou Web (client).

Pour supprimer un type de contenu d’une liste ou d’une bibliothèque de documents, vous pouvez appeler la méthode Delete, en passant une structure SPContentTypeId (serveur) ou ContentTypeId (client) qui identifie le type de contenu que vous voulez supprimer. Cependant, vous ne pouvez pas supprimer un type de contenu en cours d’utilisation. Si vous essayez de supprimer un type de contenu d’une liste, vous devez d’abord vous assurer qu’aucun élément de la liste n’utilise le type de contenu. À cette fin, une solution consiste à parcourir tous les éléments de la liste et à vérifier la valeur de la propriété ContentType de chaque élément. Si vous essayez de supprimer un type de contenu de la collection de sites où il est défini, vous devrez vous assurer que la méthode GetUsages retourne une liste vide – autrement dit, que le type de contenu n’est utilisé sur aucune liste et qu’il n’est pas le parent d’un type de contenu enfant.

Mise à jour des types de contenu

SharePoint Foundation fournit un dispositif pour contrôler les modifications apportées aux types de contenu à travers les propriétés ReadOnly et Sealed des objets SPContentType (serveur) et ContentType (client) qui représentent les types de contenu. Vous devez vérifier les paramètres de ces propriétés avant d’essayer de modifier un type de contenu. Pour plus d’informations, voir Contrôle de la modification du type du contenu.

Placez le code de mise à jour du type de contenu dans la méthode FeatureActivated(SPFeatureReceiverProperties) d’un objet SPFeatureReceiver. Après que le code a terminé les modifications effectuées sur l’objet représentant le type de contenu, validez les modifications apportées à la base de données en appelant l’une des surcharges de la méthode Update() de l’objet. Vous avez la possibilité de répercuter les modifications sur les types de contenu dérivés. Pour plus d’informations, voir Mise à jour de types de contenu enfants.

XML utilisé pour les types de contenu

Vous pouvez définir un type de contenu en utilisant XML dans une fonctionnalité. Pour plus d’informations sur le schéma utilisé pour les définitions de type de contenu, voir Définitions de type de contenu. Vous pouvez ajouter un type de contenu existant à une liste lorsque vous traitez la liste. Pour plus d’informations sur la section type de contenu du schéma de liste, voir ContentTypes, élément (List).

Pour obtenir un exemple simple qui montre comment utiliser les types de contenu XML, voir Procédure pas à pas : création d’un champ personnalisé, d’un type de contenu, d’une définition de liste et d’une instance de liste.

Zones liées aux types de contenu

Bloc de construction : Sites Web et collections de sites

Bloc de construction : Colonnes et types de champs

Bloc de construction : flux de travail

Bloc de construction : fonctionnalités

Informations complémentaires sur les types de contenu

Introduction aux types de contenu

Hiérarchie des types de contenu de base

Création de types de contenu

Mise à jour de types de contenu enfants

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