Así que un par de cuestiones relacionadas con los tipos de contenido:
En primer lugar, los tipos de contenido viene en dos sabores: tipos de contenido de sitio y tipos de contenido lista. Los tipos de contenido del sitio son "plantillas" que residen en una galería. Cuando se usa un tipo de contenido de sitio en una lista, el tipo de contenido se instancia como un tipo de contenido de lista en la lista dada.
En segundo lugar, sus tipos de contenido podrían crearse y modificarse de varias maneras, lo que decidiría en cuál de tres modos sus datos están presentes en la base de datos.
Si ha creado el tipo de contenido utilizando la GUI o mediante código personalizado utilizando la API, tanto los tipos de contenido de su sitio como los tipos de contenido de la lista están en el estado "solo base de datos" en la base de datos. Eso significa que busca en la base de datos las definiciones del tipo de contenido.
Si ha creado el tipo de contenido como una característica en CAML, se acaba su sitio tipo de contenido (o des-personalizar como se supone que debemos llamarlo en la versión 3) en la base de datos. Eso significa básicamente que la base de datos busca en el XML de características en el 12-colmena para las columnas del sitio que compone el tipo de contenido. Entonces, eso debería significar que podría actualizar la característica, y tendría nuevas columnas de sitio disponibles en el tipo de contenido de actualización, ¿verdad?
Desafortunadamente no: ¿recuerdas que también teníamos tipos de contenido de lista? Lo malo de esto es que estos tipos de contenido de la lista se instancian usando código, por lo que están en el estado "solo base de datos". Significa que sus cambios solo se verán en los tipos de contenido de su sitio, pero no en las listas existentes que usan ese tipo de contenido.
Existen varios enfoques para solucionar este problema, la solución depende de cuáles sean sus necesidades y qué tipo de cambios está realizando (eliminación de campos, adición de campos, cambio de campos).
Por ejemplo, a menudo querrá mantener los metadatos de elementos existentes, aunque el tipo de contenido cambie con el tiempo. Si avanza a través de los cambios en el tipo de contenido de la lista a través del código, perdería los datos almacenados en los campos modificados/eliminados. Una solución a esto sería agregar un tipo de contenido completamente nuevo basado en el anterior pero con los campos modificados.Agregaría el nuevo tipo de contenido (mediante código o utilizando la función XML) y usaría un receptor de funciones o similar para promocionar el nuevo tipo de contenido a todas las listas que usaban el tipo de contenido anterior y posteriormente marcar el tipo de contenido anterior como oculto. Eso permitiría mantener metadatos viejos pero no agregar nuevos elementos utilizando otros metadatos nuevos.
El enfoque mencionado en la otra respuesta a esta pregunta sería preferible si tiene acceso directo al entorno de producción y si el plan de gobierno de sus clientes lo permite. Sin embargo, al igual que con otros artefactos en SharePoint, se recomienda implementar tipos de contenido de forma estructurada. Agregar nuevos tipos de contenido de forma no estructurada influiría en la relevancia de la búsqueda (propiedades administradas) y también podría afectar la taxonomía general del sitio (columnas del sitio que no se reutilizan, etc.), por lo que a pesar de que es posible agregar estos cambios directamente en un sitio de producción, ¡no lo recomendaría!
Eso me lleva al enfoque final que recomendaría, al menos para tipos de contenido futuros: ¡Cree sus tipos de contenido programáticamente desde el principio usando un receptor de funciones! De esta forma siempre sabrá el verdadero estado de sus tipos de contenido (solo base de datos) y podrá tener un enfoque estructurado para gobernar los cambios en el futuro. Puede encontrar varias formas de hacer esto buscando en Google 'crear' tipos de contenido "programáticamente SharePoint '
Para completar: mencioné tres modos. El último modo en que puede estar su tipo de contenido es "UnGhosted". Esto significa que su tipo de contenido se creó utilizando la función XML, pero que se ha desconectado de la fuente XML original en la sección 12.
Mi amigo Søren Nielsen tiene algunos buenos puntos sobre los tipos de contenido en Audit your Content Type Hierarchy. Algunos de los problemas descritos anteriormente pueden encontrarse brevemente mencionados en un artículo de MSDN Updating Content Types. Gary Lapointe también tiene una extensión STSADM que resuelve algunos de los problemas con los tipos de contenido, consulte Propagate Content Type Changes.
Disculpe las quejas, pero el tema es complejo y exige una explicación exhaustiva para evitar cualquier malentendido.
Si creó sus tipos de contenido inicialmente en una función pero luego necesitaba actualizarlos, ¿también lo haría? recomendar el enfoque receptor de función? –
Hola, tu respuesta fue muy útil, al menos para mí :) En algún momento es muy difícil encontrar documentación en el mundo de Sharepoint. También tengo curiosidad acerca de la actualización de los tipos de contenido creados por la función :) Muchas gracias de todos modos – drax
Si utiliza el modelo de objetos o la inserción con la GUI es más una cuestión de prácticas de implementación. La secuencia de comandos en el receptor de funciones hace lo mismo, pero le da una mejor libertad para manejar CT existentes como desee yb) un proceso de implementación estructurado que se puede probar en preprod, etc. –