Sharepoint: ¿Qué sucede con las listas basadas en el tipo de contenido cuando se actualiza el tipo de contenido?

StackOverflow https://stackoverflow.com/questions/446451

Pregunta

Tengo una especie de pregunta hipotética (al menos por ahora :))

Digamos que creo una lista basada en algún tipo de contenido personalizado. Agrego unos 1000 artículos a esa lista (en producción). Luego llega el cliente y dice que necesita modificar ese tipo de contenido personalizado.

¿Qué sucede con la lista si modifico el tipo de contenido personalizado? ¿Se actualizará automáticamente (dudo)? ¿Y qué hay de los elementos de lista ya creados?

¿Alguno de ustedes tiene alguna experiencia con esto?

¿Fue útil?

Solución

Entonces, un par de problemas con respecto a los tipos de contenido:

En primer lugar, los tipos de contenido vienen en dos tipos: tipos de contenido del sitio y tipos de contenido de 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 qué tres modos sus datos están presentes en la base de datos.

Si ha creado el tipo de contenido utilizando la GUI, o mediante un código personalizado utilizando la API, tanto los tipos de contenido de su sitio como los tipos de contenido de su lista están en la "base de datos solo". estado en la base de datos. Eso significa que está buscando en la base de datos las definiciones del tipo de contenido.

Si ha creado el tipo de contenido como una característica en CAML , su sitio el tipo de contenido es fantasma (o no personalizado como se supone que lo llamaremos en v3) en la base de datos. Básicamente, eso significa que la base de datos busca en la característica XML en la sección 12 las columnas del sitio que conforman el tipo de contenido. Eso debería significar que podría actualizar la función y que 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? El fastidio aquí es que estos tipos de contenido de la lista se instancian usando código, por lo que están en la "base de datos solamente". estado. ¡Significa que sus cambios solo se verían en los tipos de contenido de su sitio, pero no en las listas existentes que usan ese tipo de contenido!

Hay varios enfoques para solucionar este problema, la solución depende de cuáles sean sus necesidades y qué tipo de cambios está haciendo (eliminar campos, agregar campos, cambiar campos).

Por ejemplo, a menudo querrá mantener los metadatos de su elemento existente, aunque el tipo de contenido cambie con el tiempo. Si pasa 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 antiguo pero con los campos modificados. Agregaría el nuevo tipo de contenido (a través del código o usando XML de características) y usaría un receptor de características o similar para propagar el nuevo tipo de contenido a todas las listas que usaban el tipo de contenido anterior, y posteriormente marcaría el tipo de contenido antiguo como oculto. Eso permitiría mantener metadatos antiguos pero no agregar elementos nuevos utilizando otros que no sean los nuevos metadatos.

Se preferiría el enfoque mencionado en la otra respuesta a esta pregunta 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 manera 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 (las columnas del sitio no se reutilizan, etc.), por lo que, aunque es posible agregar estos cambios directamente en un sitio de producción, ¡no lo recomendaría!

Eso me lleva al enfoque final que es el que recomendaría, al menos para futuros tipos de contenido: ¡Cree sus tipos de contenido mediante programación desde el principio utilizando un receptor de funciones! De esa manera, siempre conoce el verdadero estado de sus tipos de contenido (solo en la base de datos) y puede tener un enfoque estructurado para gobernar los cambios en el futuro. Puede encontrar varias formas de hacerlo buscando en Google 'crear " tipos de contenido " programáticamente SharePoint '

Para completar: mencioné tres modos. El último modo en el que puede estar su tipo de contenido es "Sin fantasma". Esto significa que su tipo de contenido fue creado usando la función XML, pero que ha sido

Otros consejos

Cuando actualiza el tipo de contenido, hay una casilla de verificación en la que puede hacer clic para actualizar los tipos de contenido secundario. Al marcar esa casilla, se actualizarán los tipos de contenido de la lista.

Tenga en cuenta que si no marca la casilla para actualizar los tipos de contenido secundario, entonces no hay forma de forzar la actualización más adelante. Por lo tanto, si no actualiza y luego desea que los tipos de contenido secundario tengan la actualización, primero debe revertir la actualización y volver a aplicarla.

.b

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top