Ar trebui să refolosesc câmpurile Drupal existente?

Publicat: 2022-02-16

Uneori suntem capabili să dăm sfaturi foarte clare: „Fă asta!” sau "Nu face asta!"

Aceasta nu va fi una dintre acele postări de blog.

Drupal vă oferă posibilitatea de a reutiliza câmpurile. Dacă aveți un câmp „Imagine”, puteți alege să utilizați același câmp pentru fiecare tip de conținut de pe site-ul dvs. Cu toate acestea, nu este întotdeauna clar dacă reutilizarea câmpurilor este o idee bună. Uneori este, alteori nu este.

Iată o prezentare generală a avantajelor și dezavantajelor de luat în considerare înainte de a reutiliza câmpurile Drupal.

Sfaturi generale privind reutilizarea câmpurilor

Puteți alege funcția „Reutilizați câmpurile existente” ori de câte ori accesați „Structură”, apoi „Tipuri de conținut” și faceți clic pe „Gestionați câmpurile” pentru un tip de conținut.

reutiliza câmpurile drupal

Documentația Drupal.org folosește pentru a recomanda oficial să nu reutilizați câmpurile:

Este recomandat să creați câmpuri noi, în loc să le reutilizați pe cele existente, cu excepția cazului în care aveți un motiv clar pentru a face acest lucru.

Cu toate acestea, acel sfat a devenit mai nuanțat în ultimii ani, iar Drupal spune oficial că acestea sunt atât avantaje, cât și dezavantaje.

Documentația Drupal Field UI are o secțiune detaliată numită „Reutilizarea câmpurilor”:

Există două motive principale pentru reutilizarea câmpurilor. În primul rând, reutilizarea câmpurilor vă poate economisi timp în ceea ce privește definirea de noi câmpuri. În al doilea rând, reutilizarea câmpurilor vă permite, de asemenea, să afișați, să filtrați, să grupați și să sortați conținutul în funcție de câmp, pe diferite tipuri de conținut. De exemplu, modulul Views contribuit vă permite să creați liste și tabele de conținut. Deci, dacă utilizați același câmp pe mai multe tipuri de conținut, puteți crea o vizualizare care să conțină toate acele tipuri de conținut împreună, afișând acel câmp, sortat după acel câmp și/sau filtrat după acel câmp. Există un motiv principal pentru a nu reutiliza un câmp: permisiuni diferite. De exemplu, este posibil să aveți nevoie de roluri de utilizator diferite pentru a avea niveluri diferite de acces la un câmp, în funcție de tipul de conținut la care a fost adăugat. Acest lucru poate fi dificil dacă reutilizați un câmp.

Avantaj: reutilizarea câmpurilor vă poate simplifica

Da, poate exista o creștere a vitezei, dar economiile de timp sunt foarte mici. Un avantaj mai convingător este că reutilizarea câmpurilor poate simplifica uneori administrarea site-ului. Web Initiative rezumă frumos acest lucru:

Reutilizarea câmpurilor poate reduce, de asemenea, complexitatea sistemului. În loc să creeze și să mențină 10 câmpuri diferite, administratorii Drupal mențin doar două câmpuri și documentația acestora. Administratorii bazelor de date trebuie doar să îmbunătățească performanța a două tabele suplimentare. SĂRUTUL este întotdeauna un principiu bun.

Cu siguranță ar fi mai ușor să aplicați permisiuni, setări și elemente de proiectare la un câmp reutilizat, mai degrabă decât la 10 câmpuri unice.

Avantaj: unele conținuturi funcționează bine cu câmpuri reutilizate

Înapoi la documentația Drupal Field UI din nou:

reutilizarea câmpurilor vă permite, de asemenea, să afișați, să filtrați, să grupați și să sortați conținutul în funcție de câmp, pe diferite tipuri de conținut. De exemplu, modulul Views contribuit vă permite să creați liste și tabele de conținut. Deci, dacă utilizați același câmp pe mai multe tipuri de conținut, puteți crea o vizualizare care să conțină toate acele tipuri de conținut împreună, afișând acel câmp, sortat după acel câmp și/sau filtrat după acel câmp.

Un scriitor de comentarii pe documentația Drupal.org susține același punct despre Views. Ei subliniază faptul că Views pot combina conținutul în moduri sofisticate. Deci, dacă aveți mai multe tipuri de conținut diferite, cu câmpuri de date diferite, atunci Vizualizările le pot combina într-o singură vizualizare. Cu toate acestea, ei subliniază și faptul că Views nu este atât de sofisticat cu sortarea. Așadar, dacă aveți mai multe tipuri de conținut diferite, cu câmpuri de date diferite, Vizualizările vor avea dificultăți să sorteze conținutul pe toate acele câmpuri de date diferite.

Dezavantaj: Câmpurile reutilizate sunt inflexibile

Brandon Williams pe Twitter a rezumat frumos acest lucru:

la început este o idee bună, dar lasă-i câteva săptămâni, cerințele se schimbă, ajungi să creezi oricum altele separate

În mare măsură, dacă alegeți câmpuri reutilizate, limitați modificările pe care le puteți face cu ușurință asupra datelor dvs. ulterior. De asemenea, este mult mai consumator de timp pentru a face actualizări, deoarece trebuie să editați fiecare câmp individual.

Dezavantaj: câmpurile reutilizate îngreunează exportul sau migrarea datelor

Reutilizarea câmpurilor ar putea deveni o problemă atunci când trebuie să exportați datele sau când trebuie să migrați la o nouă versiune de Drupal sau o altă platformă.

Fiecare câmp Drupal are propriul tabel de bază de date, așa cum se arată mai jos. Extragerea acestor date poate fi dificilă. Modulul Caracteristici (cel mai comun mod de a exporta date Drupal) s-a luptat mult timp cu câmpurile partajate, deși versiunile actuale le pot gestiona mai eficient.

media_1392150946256.png

Acest sfat este similar cu gândurile noastre despre utilizarea site-urilor multiple. Ori de câte ori începeți să construiți dependențe între baze de cod sau tabele de baze de date, adăugați complexitate site-ului dvs.

Avantaj sau dezavantaj? Performanţă

Documentația Drupal subliniază un posibil beneficiu al reutilizarii câmpurilor:

Reutilizarea câmpurilor nu numai că face ca Drupal să ruleze mai rapid, ci și mai ușor de întreținut proiectul.

Acest thread de pe Stack Overflow are o discuție foarte relevantă despre performanță. Include acest comentariu:

O problemă reală este însă numărul de câmpuri pe care le aveți. Pentru că, în prezent, în Drupal 7, configurația completă a câmpurilor a tuturor câmpurilor, indiferent dacă sunt încărcate sau nu, este preluată din cache la fiecare cerere. Am văzut site-uri cu peste 250 de câmpuri, unde încărcarea și deserializarea configurației câmpului necesită 13 MB+ memorie.”

Deci, reutilizarea câmpurilor ar putea aduce mici îmbunătățiri de performanță, permițându-ne să avem un număr total mai mic de câmpuri.

Cu toate acestea, acele mici îmbunătățiri se pot pierde în altă parte. Acesta din nou de la Web Initiative:

[câmpuri] complexitate suplimentară pentru un sistem Drupal. La crearea unui câmp nou, definiția câmpului este adăugată la tabelul clasei câmp și configurația câmpului este adăugată la tabelul instanțelor câmpului; Între timp, un nou tabel este adăugat la baza de date Drupal pentru a stoca datele câmpului. Tabelele bazei de date adaugă complexitate sistemului. În plus, interogările nodurilor vor genera expresii JOIN ale tabelelor la datele câmpului. JOIN-urile multiple vor afecta performanța bazei de date, deoarece MySQL răspunde prost la interogările cu mai multe JOIN-uri de tabele dacă nu sunt configurate corect.

rezumat

Ne pare rău că nu avem un răspuns ușor la această întrebare. Aceasta este o întrebare în care veți beneficia de citirea problemei și înțelegerea argumentelor pro și contra. Dacă construiți un site real, va merita să construiți site-ul într-un mediu de testare pentru a afla mai multe despre modul în care aceste avantaje și dezavantaje influențează nevoile site-ului dvs.