Supongamos que tengo un tipo de contenido Personcon los campos: Name, Age,Email
Este tipo de contenido está controlado por una característica llamada, testpor lo que puedo controlarlo desde la fuente y llevarlo al sitio en vivo.
Mi flujo de trabajo es así:
- Agrego un nuevo campo en
PersonllamadoPhone - localmente hago:
drush fu test -y - Edito el
test.infopara aumentar el número de versión - Confirmo los cambios en mi repositorio
- Empujo la función al sitio en vivo (copie los archivos de funciones)
- en el sitio en vivo que hago:
drush fr test -y - en el sitio en vivo que hago:
drush cc all
Luego, el nuevo campo aparece en el sitio en vivo Person.
Si en el primer paso elimino un campo del Personcampo no se eliminará del sitio en vivo. ¿Cómo puedo solucionar esto? No quiero tener que eliminarlo manualmente de la interfaz de usuario en el sitio en vivo.
¿Es correcto este flujo de trabajo?

Respuestas:
Esta es una espada de doble filo, es así para evitar la eliminación de datos, que siempre es algo bueno. Realmente no hay nada que resolver, este es el comportamiento esperado.
Es el mismo flujo de trabajo que utilizamos y lo hemos estado haciendo durante más de un año y funciona muy bien. Yo diría que es correcto, pero esa es una respuesta muy subjetiva.
fuente
drush field-delete fieldLa forma correcta de eliminar el contenido creado por las características es a través de hook_update_N (que debe implementarse en el archivo
your_module.install).La idea principal con Características es administrar la configuración con código. El uso
hook_update_Nes coherente con eso, ya que la eliminación del campo está en el código (que se puede administrar con control de versiones), mientras que el comando equivalentedrush field-delete fieldno se llama desde el código administrado; es un paso separado de la línea de comandos que debe realizar (y recordar realizar).fuente
drush field-delete fieldfuncionará bien?hook_update()es coherente con eso, ya que la eliminación del campo está en el código (que se puede administrar con control de versiones), mientras que el comando drush no se llama desde el código administrado; es un paso separado de la línea de comandos que debe realizar (y recordar realizar).hook_update_N.Cree un nuevo archivo llamado "your_feature_name.install"
Dentro del archivo declare hook_update_N , allí puede usar field_delete_field () y especificar el nombre del campo que desea eliminar como parámetro.
Ejecute update.php y los campos serán eliminados.
fuente
Si está utilizando
field_phoneotras áreas, es posible que solo desee eliminarlo del tipo de contenido Persona, pero no eliminarlo por completo de su sitio. Cree manualmente unYOUR_FEATURE_NAME.installarchivo en la carpeta de su función de la siguiente manera:Si estaba borrando esto de un párrafo de persona en lugar de un tipo de contenido de persona, podría cambiar la primera declaración condicional a algo como esto:
fuente