Diferença entre campo e instância de campo?

15

Quando vamos ao caminho /admin/structure/types/manage/article/fieldse usamos a Add new fieldopção ou a Add existing fieldopção, isso cria um campo, cria uma instância de campo ou anexa uma instância de campo? Como diferenciar entre eles? Então, programaticamente, quando usar a API field_create_field , field_create_instance e field_attach?

Na documentação da API de campo, ele menciona apenas a interface do usuário do administrador e nunca fala sobre o caminho para criar campos e instâncias de campo. Então é confuso. Nem sei se faço sentido.

Eugene Gerome
fonte
Isso deve desmistificá-lo: dikini.net/31.08.2010/…
Clive
e, normalmente, cada campo adicionado cria um novo campo no banco de dados e, quando você adiciona um campo existente, ele não cria uma nova tabela, apenas o adiciona à tabela existente.
Mohammed Shameem
11
@ Mohammed Shameem, obrigado então, o que é uma instância? Qual é o caso de uso? Ou melhor, onde a usamos na realidade?
Eugene Gerome
11
é sempre melhor usar a mesma instância de campo se o objetivo for ou a função for a mesma. por exemplo, você tem um tipo de conteúdo diferente com o mesmo vocabulário de taxonomia a ser adicionado ao todo. seria melhor adicionar o mesmo campo a todo o tipo de conteúdo, em vez de criar campos diferentes para cada tipo de conteúdo. Internamente, isso diminuiria o número de tabelas criadas pelo drupal. e pesquisar no vocabulário se tornaria melhor.
Mohammed Shameem
11
Portanto, os campos que vemos no caminho node/add/articlesão instâncias de campo (que são reutilizadas em vários tipos de entidades diferentes). E campos no caminho /admin/structure/types/manage/article/fieldssão campos. No banco de dados, não vejo uma tabela de instância de campo, mas apenas a tabela field_data que, suponho, temos quando criamos um campo no caminho /admin/structure/types/manage/article/fieldsusando field_create_field. E uma instância é anexada a um pacote (artigo neste caso) que vemos no caminho node/add/article.
18713 Eugene Gerome

Respostas:

24

Um campo é a definição básica de um campo em si. Uma instância de campo é uma instância desse campo, anexada a uma entidade / pacote configurável.

  1. Os campos são criados com field_create_field
  2. Instâncias de campo, com field_create_instance

Para verificar se o campo ou instância existe, use

  1. field_info_field ou
  2. field_info_instance

Quando você cria um campo por meio da interface do usuário, o Drupal sempre cria uma instância de campo nessa entidade / pacote.

Se você estiver adicionando um campo existente, os dados do campo serão clonados e uma instância de campo será criada na nova entidade / pacote configurável.

Por fim, as configurações de campo se aplicam globalmente a esse campo, as configurações da instância de campo podem variar entre os pacotes configuráveis ​​da entidade.

David Thomas
fonte
2
Muito obrigado, você tirou minhas dúvidas. Se eu tivesse o privilégio, marcaria sua postagem com +1.
18713 Eugene Gerome