Adicionar um campo a vários tipos de conteúdo de uma só vez?


9

Desejo adicionar um campo a vários tipos de conteúdo de uma só vez e configurá-lo para todos eles ao mesmo tempo.

A razão é que eu tenho muitos tipos de conteúdo, todos os quais precisam ser atualizados adicionando esse novo campo a cada um. Este campo será configurado da mesma forma para todos os tipos de conteúdo. Eu tenho que repetir esse processo de adição e configuração do campo a cada tipo de conteúdo ao qual eu quero adicioná-lo, e isso fica difícil depois de um tempo.

Existe alguma maneira de adicionar / configurar em massa um novo campo para muitos tipos de conteúdo?


Quantos tipos de conteúdo você possui?
bobylapointe

Suponho que essa pergunta não seja mais relevante para o OP, mas é relevante para Nigel Waters, que definiu a recompensa. Nigel gostaria de comentar?
Kari Kääriäinen

Existem 25 (é um site muito grande, que exige que sejam tipos de conteúdo separados).
Nigel Waters

Btw, outra solução é contratar alguém barato para este tipo de coisas :)
Donquixote

Ou uma macro do navegador?
Donquixote

Respostas:


9

Linhas amplas usando o módulo Recursos podem ser:

  1. Adicione o campo a dois tipos de conteúdo (para ver o padrão) manualmente
  2. Crie um recurso, incluindo bases de campo e instâncias de campo para os campos recém-criados
  3. Edite o módulo criado multiplicando as bases e instâncias de campo para todos os tipos de conteúdo necessários
  4. Ativar o módulo editado

Não me lembro como exatamente os recursos lidam com os campos. É possível desativar o recurso depois que os campos foram criados?
Donquixote

O módulo recém-nascido dependerá dos Recursos, então basicamente não, tanto quanto eu sei.
Kari Kääriäinen

Quero dizer desativar o módulo recém-nascido, não desativar Recursos. A questão é se as instâncias de campo ainda estarão lá. Talvez Lester Peabody ou Nigel Waters possam tentar e relatar isso.
Donquixote

Oh, desculpe. Sim, na verdade, ambos podem ser desabilitados, os campos permanecerão no banco de dados, como estou testando agora.
Kari Kääriäinen

Esta é a resposta certa para configurações de drupal padrão e para a maioria das outras configurações de drupal também. Mas se você tiver diferentes modos de exibição disponíveis para diferentes tipos de conteúdo, é melhor configurar manualmente os campos em cada tipo de conteúdo ou certifique-se de usar os tipos de exibição corretos no código da matriz field_instance.
Sumeet Pareek

5

Use o módulo Ferramentas de campo :

Uma coleção de ferramentas úteis da interface do usuário para trabalhar com 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!

Isso parece incrível, vou ter que olhar para isso.
Lester Peabody #:

3

Se você não se importa em escrever um módulo personalizado para isso, é relativamente fácil adicionar um campo a um tipo de conteúdo via código:
$instance = array(
'field_name' => 'field_firstname',
'label' => 'First name',
'entity_type' => 'node',
'bundle' => 'person',
);
field_create_instance($instance);

O código acima adicionará o campo "field_firstname" ao tipo de conteúdo com o nome da máquina "person". Assim, você pode criar um módulo com um formulário que permita selecionar um campo e vários tipos de conteúdo e, após o envio, o campo será adicionado a todos os tipos de conteúdo selecionados.


1

Nas poucas vezes em que fiz isso, usei o Field Collection .

Fornece um campo de coleção de campos, ao qual qualquer número de campos pode ser anexado.

Ainda é bastante árduo, pois você precisa adicionar o campo de coleção de campos a todos os tipos de conteúdo. Dito isto, se você estiver adicionando 5 ou 6 campos a vários tipos de conteúdo, precisará configurar os 5 ou 6 campos iniciais apenas uma vez na coleção de campos.

Depois disso, você cria o campo de coleção de campos (por motivos de argumentos, vamos chamá-lo field_collection_field) em um dos seus tipos de conteúdo e depois reutiliza o mesmo campo em todos os outros.

Como eu disse, você ainda precisa configurar um campo em x quantidade de tipos de conteúdo ... mas é melhor do que criar 10 campos em 10 tipos de conteúdo (por exemplo).


aah..Desculpe. Acabei de reler sua pergunta e ela precisa apenas de um campo. Desculpe por desperdiçar seu tempo> _ <
Chapabu 9/10/12

Dito isso, você pode colocar esse campo em uma coleção de campos e configurá-lo como desejar e, em seguida, referenciar a coleção de campos com o campo já configurado. No entanto, isso é um pouco exagerado.
Chapabu 9/10/12

Não tem problema, Chapabu, essa ainda é uma informação útil daqui para frente, caso eu precise fazer algo assim no futuro.
Lester Peabody

1

Se você está confortável em manipular o banco de dados diretamente, as instâncias de campo são armazenadas na tabela {field_config_instance}. Você pode adicionar / configurar seu campo para um tipo de conteúdo, localizar o registro na tabela do banco de dados e duplicá-lo.

Você precisará alterar dois valores de coluna na linha duplicada:

  • id: deve ser um novo número inteiro exclusivo da tabela
  • pacote: deve ser o nome da máquina do novo tipo de conteúdo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.