Wann ist es angebracht, eine Entität zu erstellen, anstatt nur einen neuen Inhaltstyp hinzuzufügen?


84

Was ist der Vorteil beim Erstellen neuer Entitätstypen gegenüber dem Erstellen eines neuen Inhaltstyps?

Es scheint ein wenig übertrieben zu sein, alle benutzerdefinierten Codierungen vorzunehmen, die zum Erstellen einer neuen Entität erforderlich sind, wenn alle CRUD- und Views-Funktionen bereits in Inhaltstypen integriert sind.

Antworten:


66

Es geht nicht so sehr um die Vorteile, sondern vielmehr darum, was für eine bestimmte Situation angemessen ist, wie Sie gesagt haben. Sie können so ziemlich alles mit einem Knoten darstellen, und in 99% der Situationen (wie ich zumindest festgestellt habe) müssen Sie keine benutzerdefinierten Entitätstypen implementieren.

Ich stelle mir den taxonomy_termEntitätstyp immer als ein gutes Beispiel dafür vor, warum nicht alles ein Knoten- / Inhaltstyp sein sollte:

Ein Taxonomiebegriff dient im Wesentlichen zum Gruppieren verschiedener Entitäten und erfordert daher nicht die gleiche Funktionalität wie ein Knoten. Während Sie theoretisch einen Inhaltstyp verwenden könnten , um diese Funktionalität auszuführen (möglicherweise mit einem Knotenreferenzfeld), muss ein Taxonomiebegriff nicht dasselbe tun wie ein Knoten, daher ist dies nicht wirklich sinnvoll. Das gleiche gilt für die gesagt werden userund taxonomy_vocabularyEntitätstypen.

Daher wird ein Taxonomiebegriff als separate Entität erstellt und so programmiert, dass er nur das tut, was er benötigt, und trotzdem die Vorteile erhält, dass Felder usw. angehängt werden können.

Ich denke, die einfache Antwort lautet: Wenn ein Knoten- / Inhaltstyp nicht das tut, was Sie benötigen, oder wenn es sich nur um eine massive Menge an Overkill / Overhead handelt, für die nur ein sehr geringer Nutzen erzielt wird, sollten Sie eine benutzerdefinierte Entität schreiben.

Dies basiert nur auf meiner persönlichen Erfahrung; Es würde mich interessieren, was jemand, der direkt mit der Drupal-Kernentwicklung zu tun hat, dazu zu sagen hat.


8
Ich denke, es ist jetzt etwas klarer. Daten, die nicht den gesamten zusätzlichen "Flaum" benötigen, den ein Knoten bereitstellt, wie z. B. Autor, Veröffentlichungsdatum usw. In diesem Artikel werden die allgemeinen Gründe für die Verwendung von Entitäten recht gut erläutert.
Revolte

16

Eine sehr einfache Faustregel, die ich verwende, lautet, ob Ihre Inhalte öffentlich angezeigt werden müssen. Wenn ja, wählen Sie den Knoten, wenn nicht, wählen Sie eine Entität. Mit Entityforms können Sie jetzt eine Schnittstelle zum Ausfüllen Ihrer Entitäten erstellen.

Zum Beispiel erstellen wir auf einer mit D6 erstellten Website einen Anzeigeninhaltstyp (mit Bildfeld, Start- / End-Anzeigedatum ...), aber Sie müssen dann festlegen, dass er nicht standardmäßig veröffentlicht wird, und Ihren Redakteuren die Bearbeitungsrechte erteilen / View diese Knoten und hoffte, keine Ansichten / Suche wird diese auf der Außenwelt anzeigen. Es ist ziemlich umständlich und es wäre einfacher, mit Entitäten umzugehen.


12

Eine Entität repräsentiert einen bestimmten Anwendungsfall .

Ich glaube, die Anerkennung für diese einfache Definition geht an Fago , aber ich bin zu faul, um eine Referenz zu finden.

Wir könnten Content(aka Nodes) für alle Use-Cases verwenden, wenn wir möchten, aber oft macht das keinen Sinn.

Content hat einen Autor und Einstellungen sowohl für Kommentare als auch für die Menüposition.

UsersDarstellen, einen Anwendungsfall unterschiedlich genug , um von Contentda auf einer userkeine der oben genannten Sinn macht, während auf der anderen Seite, ein userE-Mail und ein Passwort haben muss.

Taxonomy terms Sie zeichnen sich durch die eingebaute Funktionalität aus, die in einer Hierarchie angeordnet werden kann, auch in einer kreisförmigen.

Wenn Ihr Anwendungsfall einer vorhandenen Entität ähnlich genug ist, fahren Sie mit der Verwendung dieser Entität fort. Wenn für Ihre Entität jedoch andere Regeln gelten als für vorhandene, erstellen Sie eine neue.

Es gibt auch eine Einführung in Entitäten , die Ihre Frage jedoch leider nicht wirklich beantwortet.


5

Ich denke, es dreht sich alles um den Kontext. Ein Knoten wird hauptsächlich für Inhalte verwendet, also Blogs, Artikel, FAQs usw. Während Benutzer für Profile wie Mitarbeiter, Kunden usw. ein Beispiel dafür sind, wann Sie eine neue Enitity erstellen könnten:

  • Forum
  • Projekt (im Sinne des Projektmanagements)
  • Bilden
  • Unterstüzungsticket
  • Gruppe

Während Sie einen Knoten für so etwas wie ein Support-Ticket verwenden könnten, ist er möglicherweise nicht die beste Vorlage und die besten Standardeinstellungen ... Ich hoffe, das hilft.


1

Entitäten können mit weniger Aufwand als Knoten erstellt werden, da sie nicht über alle Funktionen verfügen müssen, über die Entitäten verfügen.

Dies bedeutet auch, dass die Speicherung einfacher sein kann - Sie können sie erstellen, um alle Informationen in einer einfachen Abfrage ohne JOINS zu erfassen, wenn Sie dies möchten. Alle Felder schön in nur einem ordentlichen Tisch.

Dies kann ein großer Vorteil sein, wenn Sie über viele Funktionen verfügen, die Abfragen für die Entitäten ausführen müssen, und Sie viele Entitäten gleichzeitig mit UPDATE-Abfragen für die Datenbank aktualisieren. Wenn Sie sicherstellen können, dass die Daten in einer einzelnen Tabelle relativ eigenständig sind, haben Sie weniger Sorgen und weniger Möglichkeiten, Daten zu beschädigen.


0

Ein Inhaltstyp ist als Websiteinhalt konzipiert. Das heißt, jeder Inhaltstyp ist so konzipiert, dass er veröffentlicht und auf der Site angezeigt wird. Zum Beispiel soll ein Artikel ("out of the box") auf der ersten Seite erscheinen.

Angenommen, Sie möchten ein Bewerbungsformular für eine Anstellung oder eine Wohnung erstellen. Offensichtlich möchten Sie nicht die Bewerbung einer Person auf Ihrer Website veröffentlichen. Was wäre, wenn Sie eine Liste mit Kunden- / Lead-Kontakten erstellen möchten? Möchten Sie das Risiko eingehen, dass diese Informationen versehentlich auf Ihrer Website veröffentlicht werden? Persönlich würde ich nicht.

Daher das Entitätsformularmodul, das oben erörtert wurde. Sie können damit einen Entitätstyp erstellen, der nicht als Inhalt konzipiert ist. Diese Entitätstypen stehen jedoch jedem Modul zur Verfügung, das Entitäten wie Regeln, Ansichten und organische Gruppen unterstützt, um nur einige zu nennen.

Und dann gelangen Sie zu Drupal Commerce, wo die Produkte Entitätstypen sind. Grundsätzlich ermöglichen Entities Entwicklern, Drupal auf eine Weise zu erweitern, wie sie von den ursprünglichen Drupal-Designern nicht vorgesehen war.


0

Dies ist umstritten und letztendlich müssen Sie als Entwickler Ihre Entscheidungen treffen.

Ich wähle Entitäten über Knoten aus, wenn die Daten nicht mit ihrer eigenen URL öffentlich verfügbar sein sollen. Knoten erhalten standardmäßig einen URL-Alias, einen veröffentlichten Status, einen Titel, Meta-Tags usw., während Entitäten nur einen Datensatz in der Datenbank erhalten.

"Ich möchte in der Lage sein, so viele Banner wie möglich mit Text zu versehen und dann in einem Blogpost zwischen einem davon zu wählen."

  • Der Inhaltstyp wäre "Blog".
  • Benutzerdefinierte Entität wäre "Banner-Element"

-4

Entität vs. Inhalt

Entität hat Entitätsbündel , die Felder haben

Inhalt ist eine Art von Entität. Damit,

Inhalt enthält Inhaltspakete (Artikel, Seite) mit Feldern (Textkörper, Artikelbild)

Wenn Sie Programmierer sind, wählen Sie sicherlich den Pfad zum Erstellen Ihrer eigenen Entität, aber für Sitebuilder ist dies möglicherweise nicht der beste Pfad. Auch für Site Builder gibt es eine Benutzeroberfläche zum Erstellen von Entitäten: http://drupal.org/project/eck


Hallo und willkommen bei Drupal Answers. Wollen Sie damit sagen, dass es keinen Unterschied zwischen der Verwendung eines Knotens oder einer anderen Entität gibt? Können Sie Ihre Antwort etwas erweitern?
kiamlaluno
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.