Bloque de creación: Tipos de contenido

Última modificación: viernes, 27 de mayo de 2011

Hace referencia a: SharePoint Foundation 2010

En este artículo
Modelo de objetos para tipos de contenido
XML usado para los tipos de contenido
Áreas relacionadas con los tipos de contenido
Más información acerca de los tipos de contenido

Disponible en SharePoint Online

Un tipo de contenido define los metadatos, el flujo de trabajo y el comportamiento de una categoría de elementos en una lista o biblioteca de documentos de SharePoint Foundation. Por ejemplo, se puede definir un tipo de contenido Informe de gastos para que los documentos de informe de gastos siempre se creen mediante una plantilla determinada de Microsoft Excel y un flujo de trabajo de aprobación se inicie automáticamente siempre que se envíe un nuevo informe de gastos. Si, a continuación, agrega el tipo de contenido a una biblioteca de documentos, los usuarios pueden crear y enviar un nuevo informe de gastos si seleccionan Informe de gastos en el menú adjunto al botón Nuevo documento en la biblioteca.

Una ventaja clave proporcionada por los tipos de contenido es que permiten administrar el esquema subyacente para una categoría determinada de la información de forma centralizada y reutilizable. Los tipos de contenido se definen en el nivel de sitio, independientemente de cualquier lista o biblioteca de documentos del sitio. Se puede usar el mismo tipo de contenido en diferentes listas o bibliotecas de documentos de un sitio. En algunos casos, se puede usar un tipo de contenido en listas y bibliotecas de toda una colección de sitios. Por otro lado, también se pueden usar distintos tipos de contenido en la misma lista o biblioteca de documentos. Cuando una lista o biblioteca de documentos es compatible con varios tipos de contenido, cada tipo de contenido aparece en el botón Nuevo y cada uno puede tener un conjunto único de columnas, flujos de trabajo y comportamientos.

La disponibilidad de un tipo de contenido se denomina su ámbito. El ámbito de un tipo de contenido incluye siempre el sitio donde se define el tipo de contenido, además de cada elemento secundario de ese sitio. Por ejemplo, imagine una jerarquía de sitios en la que un sitio primario denominado Europa tiene sitios secundarios denominados Italia, Francia y Alemania. Los nuevos tipos de contenido que se agreguen al sito primario Europa se pueden aplicar a las listas o bibliotecas de documentos en los sitios de Europa, Italia, Francia y Alemania. Dado que el ámbito se extiende hacia abajo a través de la jerarquía de sitios, si se agrega un tipo de contenido al sitio raíz de una colección de sitios, el tipo de contenido estará disponible para las listas y bibliotecas en toda la colección de sitios.

Los tipos de contenido se definen mediante los principios de la herencia. Nunca se crea un tipo de contenido desde cero. En su lugar, se selecciona un tipo de contenido existente como base para un tipo de contenido nuevo que se crea. Cuando se basa un nuevo tipo de contenido en un tipo de contenido existente, el nuevo tipo de contenido hereda los metadatos, los flujos de trabajo y el comportamiento del tipo de contenido primario. Esto permite definir tipos de contenido base como se definen las clases base. Por ejemplo, se puede definir un tipo de contenido denominado Documento financiero con características comunes a todos los documentos financieros de la organización. A continuación, se puede usar Documento financiero como base para dos nuevos tipos de contenido: Factura y Orden de compra. Los nuevos tipos de contenido heredarán metadatos y el comportamiento de Documento financiero, por lo que solo se definen los elementos comunes una vez en el tipo de contenido primario.

Puede ver este patrón en funcionamiento si echa un vistazo a la galería Tipos de contenido de sitio en Configuración del sitio. El tipo de contenido más básico que se puede aplicar a una lista se denomina Elemento. Los tipos de contenido Anuncio, Contacto, Tarea y muchos otros heredan de Elemento. De forma similar, el tipo de contenido más básico que se puede aplicar a una biblioteca de documentos es Documento. Los tipos de contenido Imagen, Formulario y Página Wiki heredan de Documento.

Tenga en cuenta que al crear un nuevo tipo de contenido debe decidir si desea que se use en las listas o bibliotecas de documentos. Los únicos tipos de contenido que se pueden aplicar a una biblioteca de documentos son los que heredan de Documento. Además, los únicos tipos de contenido que se pueden aplicar a una lista son aquellos que heredan de Elemento, pero no de Documento.

Una desviación importante de los principios de la herencia es que los cambios realizados en los tipos de contenido primarios no se propagan automáticamente a los tipos de contenido derivados. La propagación de cambios se lleva a cabo de forma similar a la manera en que se propagan los permisos de seguridad en la jerarquía del sistema de archivos en NTFS. Para obtener más información, vea Actualización de tipos de contenido secundarios.

Modelo de objetos para tipos de contenido

SharePoint Foundation tiene un modelo de objetos enriquecido que se puede usar para crear, buscar, agregar, actualizar y eliminar tipos de contenido. Si va a escribir código que se ejecutará en el servidor, use miembros del espacio de nombres Microsoft.SharePoint. La mayoría de los tipos en este espacio de nombres tienen equivalentes en el espacio de nombres Microsoft.SharePoint.Client que se pueden usar al escribir código que se ejecute en el cliente.

Búsqueda de tipos de contenido

Puede averiguar qué tipos de contenido están disponibles para su uso en cualquier ámbito dado si obtiene acceso a la propiedad AvailableContentTypes de un objeto SPWeb (servidor) o Web (cliente). Ambas propiedades devuelven una colección de solo lectura de objetos SPContentType (servidor) o ContentType (cliente). La colección se puede enumerar y también tiene varios indizadores, incluido el nombre del tipo de contenido.

Puede averiguar qué tipos de contenido se aplican a una lista o biblioteca de documentos si obtiene acceso a la propiedad ContentTypes de un objeto SPList en código de servidor o a la misma propiedad de un objeto List en código de cliente. Esta propiedad devuelve una colección indizada que se puede enumerar, pero en este caso la colección permite escritura.

Debe tener en cuenta que cuando se aplica un tipo de contenido de sitio a una lista o biblioteca de documentos, en realidad no se agrega el tipo de contenido de sitio, sino una copia del tipo de contenido de sitio. Además, la copia de la lista del tipo de contenido tiene un identificador de tipo de contenido diferente. Se deriva del identificador para el tipo de contenido de sitio, pero no es el mismo identificador. Esto significa que quizá no pueda recuperar el tipo de contenido que desea mediante un identificador de tipo de contenido como índice en una colección. En su lugar, debe usar el método BestMatch de la colección. Para obtener más información, vea Tipos de contenido de listas y sitios y Identificadores de tipo de contenido.

Si desea saber dónde se usa un tipo de contenido de sitio, ya sea en una lista o como el elemento primario de otro tipo de contenido de sitio, puede llamar al método estático GetUsages(SPContentType), miembro de la clase SPContentTypeUsage.

Creación de nuevos tipos de contenido

Se puede crear e implementar un tipo de contenido personalizado como parte de una característica. Para obtener más información acerca de las características, vea Bloque de creación: Características.

Coloque el código para crear el tipo de contenido en el método FeatureActivated(SPFeatureReceiverProperties) de un objeto SPFeatureReceiver. Si el tipo de contenido usa nuevas columnas de sitio, primero debe crear y aprovisionar las columnas, antes de hacer referencia a ellas en el tipo de contenido. Para obtener más información sobre las columnas, vea Bloque de creación: columnas y tipos de campo.

Para crear un objeto de tipo de contenido, llame a uno de los constructores de la clase SPContentType. Un parámetro de ambos constructores es un objeto SPContentTypeCollection. Se trata del objeto devuelto en la propiedad ContentTypes del objeto SPWeb para el sitio en el que se creará el tipo de contenido. Aunque especifique una colección de tipos de contenido de sitio en el constructor, el constructor no lo agrega a la colección. Esto se debe hacer en una llamada independiente al método Add de la misma colección.

Agregar y eliminar tipos de contenido

Para aplicar un tipo de contenido a una lista o biblioteca de documentos, primero debe establecer la propiedad AllowContentTypes de la lista en true y, a continuación, llamar al método Add de la colección devuelta en la propiedad ContentTypes del objeto SPList (servidor) o List (cliente).

Para agregar un nuevo tipo de contenido a un sitio, llame al método Add de la colección devuelta en la propiedad ContentTypes de un objeto SPWeb (servidor) o Web (cliente).

Para quitar un tipo de contenido de una lista o biblioteca de documentos, puede llamar al método Delete, pasando una estructura SPContentTypeId (servidor) o ContentTypeId (cliente) que identifique el tipo de contenido que desea eliminar. Sin embargo, no puede eliminar un tipo de contenido que está en uso. Si intenta quitar un tipo de contenido de una lista, primero debe asegurarse de que ningún elemento de lista use el tipo de contenido. Una forma de hacerlo consiste en procesar una iteración de los elementos de la lista y buscar el valor de la propiedad ContentType de cada elemento. Si intenta quitar un tipo de contenido de la colección de sitios en la que se define, asegúrese de que el método GetUsages devuelva una lista vacía; es decir, que el tipo de contenido no se use en ninguna lista y no sea el elemento primario de ningún tipo de contenido secundario.

Actualización de tipos de contenido

SharePoint Foundation proporciona un mecanismo para controlar los cambios en los tipos de contenido a través de las propiedades ReadOnly y Sealed de los objetos SPContentType (servidor) y ContentType (cliente) que representan tipos de contenido. Debe comprobar la configuración de estas propiedades antes de intentar modificar un tipo de contenido. Para obtener más información, vea Control de cambio de tipos de contenido.

Coloque el código para actualizar el tipo de contenido en el método FeatureActivated(SPFeatureReceiverProperties) de un objeto SPFeatureReceiver. Una vez que el código haya finalizado las modificaciones en el objeto que representa el tipo de contenido, confirme los cambios en la base de datos mediante una llamada a una de las sobrecargas del método Update() del objeto. Tiene la opción de propagar los cambios en los tipos de contenido derivados. Para obtener más información, vea Actualización de tipos de contenido secundarios.

XML usado para los tipos de contenido

Se puede definir un tipo de contenido mediante XML en una característica. Para obtener información sobre el esquema que se usa para las definiciones de tipo de contenido, vea Definiciones de tipo de contenido. Se puede agregar un tipo de contenido existente a una lista al aprovisionarla. Para obtener información sobre la sección de tipo de contenido del esquema de lista, vea Elemento ContentTypes (Lista).

Para obtener un ejemplo sencillo que muestre cómo usar XML con tipos de contenido, vea el tutorial para crear un campo, tipo de contenido, definición de lista e instancia de lista personalizados.

Áreas relacionadas con los tipos de contenido

Bloque de creación de sitios web y colecciones de sitios

Bloque de creación: columnas y tipos de campo

Bloque de creación: Flujos de trabajo

Bloque de creación: Características

Más información acerca de los tipos de contenido

Introducción a los tipos de contenido

Jerarquía de tipos de contenido base

Creación de tipos de contenido

Actualización de tipos de contenido secundarios

Procedimiento para agregar un tipo de contenido a un sitio