Entitäten in Drupal 7

14

Was sind Drupal-Entitäten in Drupal 7? Ich verstehe, dass Drupal Commerce Produkte als Einheit erstellt hat. Ich weiß jetzt, dass es eine zentrale Entity-API und ein Contrib-Add-On für die Entity-API gibt.

Ich habe ein paar Projekte in diesem Jahr, in denen ich Drupal 7, NoSQL und möglicherweise die Entity-API verwenden möchte, wenn dies erforderlich ist - aber ich habe Probleme zu sehen, wo es benötigt wird.

Angenommen, Sie haben eine Job-Listing-Site erstellt - ein Job entspricht nicht unbedingt dem Inhalt eines Knotens. Könnten Sie das zu einer Entität machen?

Können Sie weiterhin mit Modulen mit der Entität kommunizieren und wie wird dies durchgeführt? Ebenso wird eine Job-Posting-Entität mit Pathauto verknüpft und in Ansichten sowie in der XML-Sitemap angezeigt.

Kevin
quelle

Antworten:

9

Eine Entität ist eine durch hook_entity_info () definierte Datenstruktur und kann feldfähig sein. Dies bedeutet, dass Sie ihnen Felder hinzufügen können.

In Drupal 7 Core sind Knoten, Benutzer, Kommentare, Vokabulare und Begriffe Entitäten.

In Contrib gibt es noch viel mehr, zum Beispiel private Nachrichten und Kommerz wie ein Dutzend davon;)

Ich denke jedoch, dass Stellenausschreibungen als Knoten vollkommen in Ordnung sind :) Entitäten haben nicht automatisch die Integration von Pathauto (Tokens), Views usw.

Berdir
quelle
9

Entitäten sind eine Metaebene über Knoten, Benutzern usw.

Im Wesentlichen, wenn Sie sich D6 ansehen, gibt es viele doppelte Module und Funktionen für diese Art von Dingen. Zum Beispiel gibt es Module, um cck-Felder an Benutzer und Taxonomiebegriffe anzuhängen.

In D7 wurde entschieden, diese architektonisch gleich zu behandeln. Wenn Sie also ein Modul haben, das Entitäten bearbeitet, sollte es für Knoten, Begriffe und Benutzer funktionieren.

In früheren Versionen von Drupal hatte ein Modul wie Commerce zwei Möglichkeiten, einen benutzerdefinierten Knotentyp zu erstellen oder sich vollständig von den internen Systemen von Drupal zu entfernen und einen eigenen Typ zu definieren. Mit Entitäten ist es möglich, ein Produkt als eine Art von Sache zu beschreiben, die sich von vorhandenen Typen unterscheidet, aber dennoch Funktionen wie Felder in ihrem Aufbau nutzt.

Angenommen, Sie haben eine Job-Listing-Site erstellt - ein Job entspricht nicht unbedingt dem Inhalt eines Knotens. Könnten Sie das zu einer Entität machen?

Du könntest. Ich denke, du solltest vorsichtig sein, wenn du Dinge zu schnell entstehst. Oft tun benutzerdefinierte Knotentypen immer noch das, was Sie wollen. Entspricht ein Job einer anderen Art von Dingen als ein Knoten, oder handelt es sich um einen Knoten mit bestimmten Eigenschaften?

Jeremy French
quelle
3

Ich habe angefangen, Entitäten in einigen meiner Projekte für Dinge zu verwenden, die nicht wirklich "Inhalt" waren. Wir verwenden sie für Dinge, bei denen es uns egal ist, wann sie veröffentlicht wurden oder wer der Autor war.

Die eigentlichen Vorteile des Definierens von Entitäten liegen darin, dass Sie Ihre eigenen benutzerdefinierten Module entwickeln. Sie erhalten eine schöne Tabellenstruktur und eine Reihe von Drupal-Güte (Feldfähigkeit, Views-Integration, ...) kostenlos. Sie müssen keine eigenen benutzerdefinierten Tabellenstrukturen mehr erstellen oder einen Knotentyp an Ihre Anforderungen anpassen. Außerdem finde ich es gut, wie leicht sie sind, sodass leistungsbezogene Einheiten besser sein sollten. Wenn Sie in D6 Abfragen mit Nodes durchgeführt haben, werden Sie verstehen, was ich meine.

PPC-Coder
quelle
1

Knoten, Benutzer und Taxonomien sind Beispiele für Drupal-Entitäten. Das Hauptmerkmal einer Entität besteht darin, dass sie anderen Entitäten zugewiesen werden kann: Ein Benutzer ist einem Knoten zugeordnet, und eine Taxonomie kann Knoten und Benutzern zugewiesen werden.

Wenn das, was Sie als Job beschreiben, einem Benutzer oder einem Knoten zugewiesen werden kann, würde ich es zu einer Entität machen. Wenn das, was Sie "joben" können, nur ein Inhaltstyp ist, würde ich es nicht zu einer Entität machen.

kiamlaluno
quelle
1

Wenn Sie das in wenigen Worten sagen wollen, können Sie sagen, dass en entity nur ein Teil der Daten ist, die Drupal kennt, und die überall gespeichert werden können.

Haza
quelle