¿Agregar un campo a múltiples tipos de contenido a la vez?

9

Quiero agregar un campo a múltiples tipos de contenido a la vez, y configurarlo para todos a la vez también.

La razón es que tengo muchos tipos de contenido, todos los cuales deben actualizarse agregando este nuevo campo a cada uno. Este campo se configurará igual para todos los tipos de contenido también. Tengo que repetir este proceso de agregar y luego configurar el campo a cada tipo de contenido al que quiero agregarlo, y se vuelve difícil después de un tiempo.

¿Hay alguna forma de agregar / configurar en masa un nuevo campo para muchos tipos de contenido?

Lester Peabody
fuente
¿Cuántos tipos de contenido tienes?
bobylapointe
Supongo que esta pregunta ya no es relevante para OP, pero es relevante para Nigel Waters que estableció la recompensa. ¿Le gustaría a Nigel comentar?
Kari Kääriäinen
Hay 25 (es un sitio muy grande, que requiere que estos sean tipos de contenido separados).
Nigel Waters el
Por cierto, otra solución es contratar a alguien barato para este tipo de cosas :)
donquixote
¿O una macro de navegador?
donquixote

Respuestas:

9

Las líneas generales que utilizan el módulo Características podrían ser:

  1. Agregue el campo a dos tipos de contenido (para ver el patrón) a mano
  2. Cree una característica que incluya bases de campo e instancias de campo para los campos recién creados
  3. Edite el módulo creado multiplicando las bases de campo y las instancias a todos los tipos de contenido necesarios
  4. Habilitar el módulo editado
Kari Kääriäinen
fuente
No recuerdo cómo exactamente las funciones se ocupan de los campos ... ¿es posible deshabilitar la función después de que se hayan creado los campos?
donquixote
El módulo para recién nacidos dependerá de las características, así que básicamente no, hasta donde yo sé.
Kari Kääriäinen
Me refiero a desactivar el módulo recién nacido, no desactivar las características. La pregunta es si las instancias de campo seguirán allí. Quizás Lester Peabody o Nigel Waters puedan intentarlo e informar.
donquixote
Oh, lo siento. Sí, en realidad ambos pueden deshabilitarse, los campos vivirán en la base de datos, ya veo, ya que ahora lo estoy probando.
Kari Kääriäinen
Esta es la respuesta correcta para las configuraciones predeterminadas de drupal y la mayoría de las otras configuraciones de drupal también. Pero si tiene diferentes modos de visualización disponibles para diferentes tipos de contenido, es mejor que configure los campos en cada tipo de contenido a mano, o asegúrese de usar los tipos de visualización correctos en su código de matriz field_instance.
Sumeet Pareek
5

Utilice el módulo de herramientas de campo :

Una colección de herramientas útiles de IU para trabajar con campos:

Overview of fields with links to edit single instances, and all instances at once
Clone any field instance to multiple entities and bundles
Clone all field instance of a bundle to multiple entities and bundles
Import and export fields
Delete multiple instances of a field
Apply a vocabulary to multiple entities and bundles at once (the same way vocabularies were applied to content types on Drupal 6)
... your idea here. Patches welcome!
Nigel Waters
fuente
Esto suena bastante impresionante, voy a tener que ver esto.
Lester Peabody
3

Si no le importa escribir un módulo personalizado para esto, es relativamente fácil agregar un campo a un tipo de contenido a través del código:
$instance = array(
'field_name' => 'field_firstname',
'label' => 'First name',
'entity_type' => 'node',
'bundle' => 'person',
);
field_create_instance($instance);

El código anterior agregará el campo "field_firstname" al tipo de contenido con el nombre de máquina "persona". Por lo tanto, puede crear un módulo con un formulario que le permita seleccionar un campo y varios tipos de contenido y, al enviarlo, el campo se agrega a todos los tipos de contenido seleccionados.

LVA
fuente
1

Las pocas veces que tuve que hacer esto, utilicé Field Collection .

Proporciona un campo de colección de campos, al que se puede adjuntar cualquier número de campos.

Sin embargo, todavía es bastante arduo, ya que debe agregar el campo de colección de campos a cada tipo de contenido. Dicho esto, si está agregando 5 o 6 campos a múltiples tipos de contenido, solo tiene que configurar los 5 o 6 campos iniciales una vez en la colección de campos.

Después de eso, crea el campo de colección de campos (por el bien de los argumentos, llamémoslo field_collection_field) en uno de sus tipos de contenido, y luego reutiliza el mismo campo en todos los demás.

Como dije, aún debe configurar un campo en x cantidad de tipos de contenido ... pero es mejor que crear 10 campos en 10 tipos de contenido (por ejemplo).

Chapabu
fuente
aah ... lo siento. Acabo de volver a leer su pregunta también y solo necesita un campo. Perdón por perder el tiempo> _ <
Chapabu
Dicho esto, puede poner este campo en una colección de campos y configurarlo como desee, y luego hacer referencia a la colección de campos con su campo ya configurado. Sin embargo, esto es un poco exagerado.
Chapabu
No hay problema Chapabu, esta sigue siendo información útil en el futuro en caso de que necesite hacer algo como esto en el futuro.
Lester Peabody
1

Si se siente cómodo manipulando la base de datos directamente, las instancias de campo se almacenan en la tabla {field_config_instance}. Puede agregar / configurar su campo para un tipo de contenido, luego buscar el registro en la tabla de la base de datos y duplicarlo.

Tendrá que cambiar dos valores de columna en la fila duplicada:

  • id: debe ser un nuevo entero exclusivo de la tabla
  • paquete: debe ser el nombre de la máquina del nuevo tipo de contenido
Les lim
fuente