Dovrei riutilizzare i campi Drupal esistenti?
Pubblicato: 2022-02-16A volte siamo in grado di dare consigli molto chiari: "Fai questo!" o "Non farlo!"
Questo non sarà uno di quei post sul blog.
Drupal ti dà la possibilità di riutilizzare i campi. Se hai un campo "Immagine", puoi scegliere di utilizzare lo stesso campo su ogni tipo di contenuto del tuo sito. Tuttavia, non è sempre chiaro se riutilizzare i campi sia una buona idea. A volte lo è, a volte no.
Ecco una panoramica dei vantaggi e degli svantaggi da considerare prima di riutilizzare i campi Drupal.
Consigli generali sul riutilizzo dei campi
Puoi scegliere la funzione "Riutilizza campo esistente" ogni volta che vai su "Struttura", quindi "Tipi di contenuto" e fai clic su "Gestisci campi" per un tipo di contenuto.
La documentazione di Drupal.org usa per raccomandare ufficialmente di non riutilizzare i campi:
Si consiglia di creare nuovi campi, anziché riutilizzare quelli esistenti, a meno che non si abbia una chiara ragione per farlo.
Tuttavia, quel consiglio è diventato più sfumato negli ultimi anni e Drupal afferma ufficialmente che sono sia vantaggi che svantaggi.
La documentazione dell'interfaccia utente di Drupal Field ha una sezione dettagliata chiamata "Riutilizzo dei campi":
Ci sono due ragioni principali per il riutilizzo dei campi. Innanzitutto, il riutilizzo dei campi può farti risparmiare tempo nella definizione di nuovi campi. In secondo luogo, il riutilizzo dei campi consente anche di visualizzare, filtrare, raggruppare e ordinare il contenuto per campo tra i tipi di contenuto. Ad esempio, il modulo Visualizzazioni con contributo consente di creare elenchi e sommari. Quindi, se utilizzi lo stesso campo su più tipi di contenuto, puoi creare una vista contenente tutti quei tipi di contenuto insieme visualizzando quel campo, ordinato per quel campo e/o filtrato per quel campo. C'è un motivo principale per non riutilizzare un campo: autorizzazioni diverse. Ad esempio, potresti aver bisogno di ruoli utente diversi per avere diversi livelli di accesso a un campo, a seconda del tipo di contenuto a cui è stato aggiunto. Questo può essere difficile se riutilizzi un campo.
Vantaggio: il riutilizzo dei campi può semplificarti
Sì, può esserci un aumento di velocità, ma il risparmio di tempo è molto ridotto. Un vantaggio più convincente è che il riutilizzo dei campi a volte può semplificare l'amministrazione del sito. Web Initiative riassume bene:
Il riutilizzo dei campi può anche ridurre la complessità del sistema. Invece di creare e mantenere 10 campi diversi, gli amministratori di Drupal mantengono solo due campi e la relativa documentazione. Gli amministratori di database devono solo migliorare le prestazioni di due tabelle aggiuntive. KISS è sempre un buon principio.
Sarebbe sicuramente più facile applicare autorizzazioni, impostazioni ed elementi di progettazione a un campo riutilizzato piuttosto che a 10 campi univoci.
Vantaggio: alcuni contenuti funzionano bene con i campi riutilizzati
Torna di nuovo alla documentazione dell'interfaccia utente di Drupal Field:
il riutilizzo dei campi consente inoltre di visualizzare, filtrare, raggruppare e ordinare i contenuti per campo tra i tipi di contenuto. Ad esempio, il modulo Visualizzazioni con contributo consente di creare elenchi e sommari. Quindi, se utilizzi lo stesso campo su più tipi di contenuto, puoi creare una vista contenente tutti quei tipi di contenuto insieme visualizzando quel campo, ordinato per quel campo e/o filtrato per quel campo.
Uno scrittore di commenti sulla documentazione di Drupal.org fa lo stesso punto su Views. Sottolineano che le viste possono combinare i contenuti in modi sofisticati. Pertanto, se disponi di più tipi di contenuto diversi, con campi di data diversi, le visualizzazioni possono combinarli in un'unica visualizzazione. Tuttavia, sottolineano anche che Views non è così sofisticato con l'ordinamento. Quindi, se disponi di più tipi di contenuto diversi, con campi di data diversi, Views avrà difficoltà a ordinare il contenuto in tutti quei campi di data diversi.

Svantaggio: i campi riutilizzati non sono flessibili
Brandon Williams su Twitter ha riassunto bene questo:
all'inizio è una buona idea, ma dagli un paio di settimane, le richieste cambiano, finisci per crearne comunque di separate
In larga misura, se scegli i campi riutilizzati, stai limitando le modifiche che puoi facilmente apportare ai tuoi dati in un secondo momento. È anche molto più dispendioso in termini di tempo effettuare gli aggiornamenti perché è necessario modificare ogni campo individualmente.
Svantaggio: i campi riutilizzati rendono più difficile l'esportazione o la migrazione dei dati
Il riutilizzo dei campi potrebbe diventare un problema quando devi esportare i tuoi dati o quando devi migrare a una nuova versione di Drupal o un'altra piattaforma.
Ogni campo Drupal ha la propria tabella di database, come mostrato di seguito. Estrarre quei dati può essere difficile. Il modulo Funzionalità (il modo più comune per esportare i dati Drupal) ha lottato a lungo con i campi condivisi, sebbene le versioni attuali possano gestirli in modo più efficace.

Questo consiglio è simile ai nostri pensieri sull'utilizzo di più siti. Ogni volta che inizi a creare dipendenze tra codebase o tabelle di database, aggiungi complessità al tuo sito.
Vantaggio o svantaggio? Prestazione
La documentazione Drupal delinea un possibile vantaggio del riutilizzo dei campi:
Il riutilizzo dei campi non solo rende Drupal più veloce, ma rende anche più facile la manutenzione del tuo progetto.
Questo thread su Stack Overflow ha una discussione molto rilevante sulle prestazioni. Include questo commento:
Un vero problema, tuttavia, è il numero di campi che hai. Perché attualmente in Drupal 7, la configurazione completa del campo di tutti i campi, indipendentemente dal fatto che siano caricati o meno, viene recuperata dalla cache ad ogni singola richiesta. Ho visto siti con oltre 250 campi, in cui caricare e annullare la serializzazione della configurazione del campo richiede 13 MB di memoria".
Pertanto, il riutilizzo dei campi potrebbe apportare piccoli miglioramenti alle prestazioni consentendoci di avere un numero totale di campi inferiore.
Tuttavia, quei piccoli miglioramenti potrebbero essere persi altrove. Questo di nuovo da Web Initiative:
[campi] complessità extra per un sistema Drupal. Quando si crea un nuovo campo, la definizione del campo viene aggiunta alla tabella della classe del campo e la configurazione del campo viene aggiunta alla tabella dell'istanza del campo; nel frattempo, viene aggiunta una nuova tabella al database Drupal per memorizzare i dati del campo. Le tabelle del database aggiungono complessità al sistema. Inoltre, le query dei nodi comporteranno JOINexpressions di tabelle per i dati di campo. Più JOIN influiranno sulle prestazioni del database poiché MySQL risponde male alle query con più JOIN di tabelle se non configurate correttamente.
Riepilogo
Siamo spiacenti di non avere una risposta facile a questa domanda. Questa è una domanda in cui trarrai vantaggio dalla lettura del problema e dalla comprensione dei pro e dei contro. Se stai creando un sito reale, varrà la pena costruire il sito in un ambiente di test per saperne di più su come questi pro e contro influiscono sulle esigenze del tuo sito.