Soll ich vorhandene Drupal-Felder wiederverwenden?

Veröffentlicht: 2022-02-16

Manchmal können wir ganz klare Ratschläge geben: „Mach das!“ oder "Tu das nicht!"

Dies wird nicht einer dieser Blogbeiträge sein.

Drupal gibt Ihnen die Möglichkeit, Felder wiederzuverwenden. Wenn Sie ein „Bild“-Feld haben, können Sie dasselbe Feld für jeden Inhaltstyp auf Ihrer Website verwenden. Es ist jedoch nicht immer klar, ob die Wiederverwendung von Feldern eine gute Idee ist. Manchmal ist es, manchmal nicht.

Hier ist ein Überblick über die Vor- und Nachteile, die vor der Wiederverwendung von Drupal-Feldern zu berücksichtigen sind.

Allgemeine Hinweise zur Wiederverwendung von Feldern

Sie können die Funktion „Vorhandenes Feld wiederverwenden“ auswählen, wenn Sie zu „Struktur“ und dann zu „Inhaltstypen“ gehen und für einen Inhaltstyp auf „Felder verwalten“ klicken.

Drupal-Felder wiederverwenden

Die Drupal.org-Dokumentation verwendet, um offiziell zu empfehlen, Felder nicht wiederzuverwenden:

Es wird empfohlen, neue Felder zu erstellen, anstatt vorhandene wiederzuverwenden, es sei denn, Sie haben einen klaren Grund dafür.

Diese Ratschläge sind jedoch in den letzten Jahren differenzierter geworden, und Drupal sagt offiziell, dass dies sowohl Vor- als auch Nachteile sind.

Die Drupal Field UI-Dokumentation enthält einen detaillierten Abschnitt mit dem Titel „Wiederverwendung von Feldern“:

Es gibt zwei Hauptgründe für die Wiederverwendung von Feldern. Erstens können Sie durch die Wiederverwendung von Feldern gegenüber der Definition neuer Felder Zeit sparen. Zweitens ermöglicht Ihnen die Wiederverwendung von Feldern auch, Inhalte nach Feld über Inhaltstypen hinweg anzuzeigen, zu filtern, zu gruppieren und zu sortieren. Beispielsweise können Sie mit dem Contributed Views-Modul Listen und Inhaltsverzeichnisse erstellen. Wenn Sie also dasselbe Feld für mehrere Inhaltstypen verwenden, können Sie eine Ansicht erstellen, die alle diese Inhaltstypen zusammen enthält und dieses Feld anzeigt, nach diesem Feld sortiert und/oder nach diesem Feld gefiltert. Es gibt einen Hauptgrund dafür, ein Feld nicht wiederzuverwenden: unterschiedliche Berechtigungen. Beispielsweise benötigen Sie je nach Inhaltstyp, dem es hinzugefügt wurde, möglicherweise unterschiedliche Benutzerrollen, um unterschiedliche Zugriffsebenen auf ein Feld zu haben. Dies kann schwierig sein, wenn Sie ein Feld wiederverwenden.

Vorteil: Die Wiederverwendung von Feldern kann Ihre Arbeit vereinfachen

Ja, es kann einen Geschwindigkeitsschub geben, aber die Zeitersparnis ist sehr gering. Ein überzeugenderer Vorteil ist, dass die Wiederverwendung von Feldern manchmal die Site-Administration vereinfachen kann. Web Initiative fasst das gut zusammen:

Die Wiederverwendung von Feldern kann auch die Komplexität des Systems reduzieren. Anstatt 10 verschiedene Felder zu erstellen und zu pflegen, pflegen Drupal-Administratoren nur zwei Felder und deren Dokumentation. Datenbankadministratoren müssen nur die Leistung von zwei zusätzlichen Tabellen verbessern. KISS ist immer ein gutes Prinzip.

Es wäre definitiv einfacher, Berechtigungen, Einstellungen und Designelemente auf ein wiederverwendetes Feld anzuwenden als auf 10 eindeutige Felder.

Vorteil: Einige Inhalte funktionieren gut mit wiederverwendeten Feldern

Zurück zur Dokumentation der Drupal Field UI:

Durch die Wiederverwendung von Feldern können Sie Inhalte auch inhaltstypenübergreifend nach Feld anzeigen, filtern, gruppieren und sortieren. Beispielsweise können Sie mit dem Contributed Views-Modul Listen und Inhaltsverzeichnisse erstellen. Wenn Sie also dasselbe Feld für mehrere Inhaltstypen verwenden, können Sie eine Ansicht erstellen, die alle diese Inhaltstypen zusammen enthält und dieses Feld anzeigt, nach diesem Feld sortiert und/oder nach diesem Feld gefiltert.

Ein Kommentarschreiber in der Drupal.org-Dokumentation macht denselben Punkt in Bezug auf Views. Sie weisen darauf hin, dass Ansichten Inhalte auf raffinierte Weise kombinieren können. Wenn Sie also mehrere verschiedene Inhaltstypen mit unterschiedlichen Datumsfeldern haben, können Ansichten diese zu einer einzigen Ansicht kombinieren. Sie weisen jedoch auch darauf hin, dass Views beim Sortieren nicht so ausgefeilt ist. Wenn Sie also mehrere verschiedene Inhaltstypen mit unterschiedlichen Datumsfeldern haben, wird Views Schwierigkeiten haben, den Inhalt in all diesen verschiedenen Datumsfeldern zu sortieren.

Nachteil: Wiederverwendete Felder sind unflexibel

Brandon Williams auf Twitter fasste dies gut zusammen:

Am Anfang ist es eine gute Idee, aber geben Sie ihm ein paar Wochen Zeit, Änderungen erforderlich, Sie erstellen sowieso separate

Wenn Sie sich für wiederverwendete Felder entscheiden, schränken Sie in hohem Maße die Änderungen ein, die Sie später problemlos an Ihren Daten vornehmen können. Es ist auch viel zeitaufwändiger, Aktualisierungen vorzunehmen, da Sie jedes Feld einzeln bearbeiten müssen.

Nachteil: Wiederverwendete Felder erschweren den Export oder die Migration von Daten

Die Wiederverwendung von Feldern kann zu einem Problem werden, wenn Sie Ihre Daten exportieren oder auf eine neue Version von Drupal oder eine andere Plattform migrieren müssen.

Jedes Drupal-Feld hat seine eigene Datenbanktabelle, wie unten gezeigt. Das Extrahieren dieser Daten kann schwierig sein. Das Features-Modul (die gebräuchlichste Methode zum Exportieren von Drupal-Daten) hatte lange Zeit mit gemeinsam genutzten Feldern zu kämpfen, obwohl aktuelle Versionen damit besser umgehen können.

media_1392150946256.png

Dieser Rat ähnelt unseren Überlegungen zur Verwendung mehrerer Websites. Immer wenn Sie anfangen, Abhängigkeiten zwischen Codebasen oder Datenbanktabellen aufzubauen, erhöhen Sie die Komplexität Ihrer Site.

Vorteil oder Nachteil? Leistung

Die Drupal-Dokumentation beschreibt einen möglichen Vorteil der Wiederverwendung von Feldern:

Die Wiederverwendung von Feldern macht Drupal nicht nur schneller, sondern macht Ihr Projekt auch wartungsfreundlicher.

Dieser Thread zu Stack Overflow enthält eine sehr relevante Diskussion zur Leistung. Es enthält diesen Kommentar:

Ein echtes Problem ist jedoch die Anzahl der Felder, die Sie haben. Denn derzeit wird in Drupal 7 die komplette Feldkonfiguration aller Felder, egal ob geladen oder nicht, bei jeder einzelnen Anfrage aus dem Cache geholt. Ich habe Websites mit mehr als 250 Feldern gesehen, bei denen das Laden und Deserialisieren der Feldkonfiguration mehr als 13 MB Speicher benötigt."

Die Wiederverwendung von Feldern könnte also möglicherweise zu kleinen Leistungsverbesserungen führen, da wir eine geringere Gesamtzahl von Feldern haben.

Diese kleinen Verbesserungen können jedoch an anderer Stelle verloren gehen. Nochmal das von Web Initiative:

[Felder] zusätzliche Komplexität für ein Drupal-System. Beim Erstellen eines neuen Felds wird die Felddefinition der Feldklassentabelle und die Feldkonfiguration der Feldinstanztabelle hinzugefügt; In der Zwischenzeit wird der Drupal-Datenbank eine neue Tabelle hinzugefügt, um die Felddaten zu speichern. Datenbanktabellen erhöhen die Komplexität des Systems. Darüber hinaus führen Abfragen von Knoten zu JOIN-Ausdrücken von Tabellen zu Felddaten. Mehrere JOINs wirken sich auf die Datenbankleistung aus, da MySQL schlecht auf Abfragen mit mehreren JOINs von Tabellen reagiert, wenn es nicht richtig konfiguriert ist.

Zusammenfassung

Es tut uns leid, dass wir auf diese Frage keine einfache Antwort haben. Dies ist eine Frage, bei der Sie davon profitieren werden, sich mit dem Thema vertraut zu machen und die Vor- und Nachteile zu verstehen. Wenn Sie eine echte Website erstellen, lohnt es sich, die Website in einer Testumgebung zu erstellen, um mehr darüber zu erfahren, wie sich diese Vor- und Nachteile auf die Anforderungen Ihrer Website auswirken.