Devo reutilizar os campos Drupal existentes?

Publicados: 2022-02-16

Às vezes somos capazes de dar conselhos muito claros: "Faça isso!" ou "Não faça isso!"

Este não vai ser um daqueles posts de blog.

O Drupal oferece a capacidade de reutilizar campos. Se você tiver um campo "Imagem", poderá optar por usar esse mesmo campo em todos os tipos de conteúdo do seu site. No entanto, nem sempre está claro se a reutilização de campos é uma boa ideia. Às vezes é, às vezes não é.

Aqui está uma visão geral das vantagens e desvantagens a serem consideradas antes de reutilizar os campos Drupal.

Conselhos gerais sobre a reutilização de campos

Você pode escolher o recurso "Reutilizar campo existente" sempre que for para "Estrutura", depois "Tipos de conteúdo" e clicar em "Gerenciar campos" para um tipo de conteúdo.

reutilizar campos drupal

A documentação do Drupal.org costuma recomendar oficialmente que você não reutilize campos:

É recomendável criar novos campos, em vez de reutilizar os existentes, a menos que você tenha uma razão clara para fazê-lo.

No entanto, esse conselho tornou-se mais sutil nos últimos anos, e o Drupal diz oficialmente que são vantagens e desvantagens.

A documentação da interface do usuário do Drupal Field tem uma seção detalhada chamada "Reutilizando campos":

Há duas razões principais para reutilizar campos. Primeiro, a reutilização de campos pode economizar seu tempo na definição de novos campos. Segundo, a reutilização de campos também permite que você exiba, filtre, agrupe e classifique o conteúdo por campo nos tipos de conteúdo. Por exemplo, o módulo de Visualizações contribuídas permite que você crie listas e tabelas de conteúdo. Portanto, se você usar o mesmo campo em vários tipos de conteúdo, poderá criar uma exibição contendo todos esses tipos de conteúdo juntos exibindo esse campo, classificado por esse campo e/ou filtrado por esse campo. Há uma razão principal para não reutilizar um campo: permissões diferentes. Por exemplo, você pode precisar de diferentes funções de usuário para ter diferentes níveis de acesso a um campo, dependendo do tipo de conteúdo ao qual ele foi adicionado. Isso pode ser difícil se você reutilizar um campo.

Vantagem: a reutilização de campos pode simplificar o seu

Sim, pode haver um aumento de velocidade, mas a economia de tempo é muito pequena. Uma vantagem mais atraente é que a reutilização de campos às vezes pode simplificar a administração do site. Web Initiative resume bem isso:

A reutilização de campos também pode reduzir a complexidade do sistema. Em vez de criar e manter 10 campos diferentes, os administradores do Drupal mantêm apenas dois campos e sua documentação. Os administradores de banco de dados só precisam melhorar o desempenho de duas tabelas extras. KISS é sempre um bom princípio.

Definitivamente, seria mais fácil aplicar permissões, configurações e elementos de design a um campo reutilizado em vez de 10 campos exclusivos.

Vantagem: alguns conteúdos funcionam bem com campos reutilizados

Volte para a documentação da interface do usuário do Drupal Field novamente:

a reutilização de campos também permite exibir, filtrar, agrupar e classificar o conteúdo por campo nos tipos de conteúdo. Por exemplo, o módulo de Visualizações contribuídas permite que você crie listas e tabelas de conteúdo. Portanto, se você usar o mesmo campo em vários tipos de conteúdo, poderá criar uma exibição contendo todos esses tipos de conteúdo juntos exibindo esse campo, classificado por esse campo e/ou filtrado por esse campo.

Um escritor de comentários sobre a documentação do Drupal.org faz o mesmo sobre Views. Eles apontam que Views podem combinar conteúdo de maneiras sofisticadas. Portanto, se você tiver vários tipos de conteúdo diferentes, com campos de data diferentes, as Visualizações podem combiná-los em uma única visualização. No entanto, eles também apontam que Views não é tão sofisticado com a classificação. Portanto, se você tiver vários tipos de conteúdo diferentes, com campos de data diferentes, as exibições terão dificuldade para classificar o conteúdo em todos esses campos de data diferentes.

Desvantagem: Campos reutilizados são inflexíveis

Brandon Williams no Twitter resumiu muito bem:

no começo é uma boa ideia, mas depois de algumas semanas, os requisitos mudam, você acaba criando outros separados de qualquer maneira

Em grande medida, se você escolher campos reutilizados, estará limitando as alterações que poderá fazer facilmente em seus dados posteriormente. Também é muito mais demorado fazer atualizações porque você precisa editar cada campo individualmente.

Desvantagem: os campos reutilizados tornam os dados mais difíceis de exportar ou migrar

A reutilização de campos pode se tornar um problema quando você precisar exportar seus dados ou quando precisar migrar para uma nova versão do Drupal ou outra plataforma.

Cada campo do Drupal possui sua própria tabela de banco de dados, conforme mostrado abaixo. Extrair esses dados pode ser difícil. O módulo Features (a maneira mais comum de exportar dados do Drupal) lutou por muito tempo com campos compartilhados, embora as versões atuais possam lidar com eles de forma mais eficaz.

media_1392150946256.png

Este conselho é semelhante aos nossos pensamentos sobre o uso de vários sites. Sempre que você começa a criar dependências entre bases de código ou tabelas de banco de dados, adiciona complexidade ao seu site.

Vantagem ou desvantagem? Desempenho

A documentação do Drupal descreve um possível benefício da reutilização de campos:

A reutilização de campos não apenas torna o Drupal mais rápido, mas também facilita a manutenção do seu projeto.

Este tópico no Stack Overflow tem uma discussão muito relevante sobre desempenho. Inclui este comentário:

Um problema real, porém, é o número de campos que você tem. Porque atualmente no Drupal 7, a configuração completa de todos os campos, independentemente de estarem carregados ou não, é obtida do cache em cada solicitação. Já vi sites com mais de 250 campos, onde carregar e desserializar a configuração de campo ocupa mais de 13 MB de memória."

Portanto, a reutilização de campos poderia proporcionar pequenas melhorias de desempenho, permitindo que tenhamos um número total menor de campos.

No entanto, essas pequenas melhorias podem ser perdidas em outros lugares. Isso da Web Initiative novamente:

[campos] complexidade extra para um sistema Drupal. Ao criar um novo campo, a definição do campo é adicionada à tabela de classe de campo e a configuração do campo é adicionada à tabela de instância de campo; enquanto isso, uma nova tabela é adicionada ao banco de dados Drupal para armazenar os dados do campo. As tabelas de banco de dados adicionam complexidade ao sistema. Além disso, as consultas de nós incorrerão em expressões JOIN de tabelas para dados de campo. Vários JOINs afetarão o desempenho do banco de dados, pois o MySQL responde mal a consultas com vários JOINs de tabelas se não for configurado corretamente.

Resumo

Desculpe, não temos uma resposta fácil para esta pergunta. Esta é uma pergunta em que você se beneficiará lendo sobre o problema e entendendo os prós e contras. Se você estiver criando um site real, valerá a pena construir o site em um ambiente de teste para saber mais sobre como esses prós e contras afetam as necessidades do seu site.