Entités dans Drupal 7

13

Que sont les entités Drupal dans Drupal 7? Je comprends que Drupal Commerce a créé des produits en tant qu'entité. Je sais maintenant qu'il existe une API d'entité principale et un module complémentaire pour l'API d'entité.

J'ai quelques projets cette année où j'aimerais utiliser Drupal 7, NoSQL et peut-être l'API Entity s'il le demande, mais j'ai du mal à voir où cela serait nécessaire.

En supposant que vous construisiez un site de liste d'emplois - un travail n'est pas nécessairement comme le contenu d'un nœud, pourriez-vous / voulez-vous en faire une entité?

De plus, pouvez-vous toujours avoir la possibilité de parler aux modules avec l'entité et comment cela se fait-il? Par exemple, une entité d'affichage de poste se faisant alias avec Pathauto et exposée dans les vues et apparaît dans le plan du site XML.

Kevin
la source

Réponses:

9

Une entité est une structure de données définie par hook_entity_info () et peut être modifiable, ce qui signifie que vous pouvez y ajouter des champs.

Dans Drupal 7 Core, les nœuds, les utilisateurs, les commentaires, les vocabulaires et les termes sont des entités.

Dans Contrib, il y en a beaucoup plus, par exemple des messages privés et du commerce comme une douzaine d'entre eux;)

Cependant, je pense que les offres d'emploi sont parfaitement adaptées aux nœuds :) Les entités n'ont pas automatiquement l'intégration de Pathauto (jetons), de vues, etc.

Berdir
la source
9

Les entités sont un niveau méta au-dessus des nœuds, des utilisateurs, etc.

Essentiellement, si vous regardez D6, il existe de nombreux modules en double et des fonctionnalités sur ces types de choses. Par exemple, il existe des modules pour attacher des champs cck aux utilisateurs et aux termes de taxonomie.

Dans D7, il a été décidé de les traiter de la même manière, sur le plan architectural, donc si vous avez un module qui fait quelque chose pour les entités, il devrait fonctionner pour les nœuds, les termes et les utilisateurs.

Dans les versions précédentes de Drupal, un module comme Commerce aurait eu deux options, pour créer un type de nœud personnalisé, ou pour aller complètement en dehors des systèmes internes de Drupal et définir leur propre type de chose. Avec des entités, il est possible de décrire un produit comme un type de chose, distinct des types existants, tout en tirant parti de fonctionnalités telles que des champs dans leur composition.

En supposant que vous construisiez un site de liste d'emplois - un travail n'est pas nécessairement comme le contenu d'un nœud, pourriez-vous / voulez-vous en faire une entité?

Vous pourriez. Je pense que vous devriez faire attention à ne pas créer trop rapidement des entités. Souvent, les types de nœuds personnalisés feront toujours ce que vous voulez. Un travail répertoriant un type de chose différent d'un nœud, ou s'agit-il d'un nœud avec des propriétés spéciales?

Jeremy French
la source
3

J'ai commencé à utiliser des entités dans quelques-uns de mes projets pour des choses qui n'étaient pas vraiment du «contenu». Nous les utilisons pour des choses dont nous ne nous soucions pas vraiment quand il a été publié ou qui était l'auteur.

Les vrais avantages de définir des entités sont si vous développez vos propres modules personnalisés. Vous obtenez gratuitement une belle structure de table et un tas de qualités Drupal (Fieldability, intégration des vues, ...). Plus besoin de créer vos propres structures de table personnalisées ou d'adapter un type de nœud à vos besoins. De plus, j'aime leur légèreté, donc les entités performantes devraient être meilleures. Si vous avez fait des requêtes dans D6 avec des nœuds, vous comprendrez ce que je veux dire.

PPC-Coder
la source
1

Les nœuds, les utilisateurs, les taxonomies sont des exemples d'entités Drupal. La principale caractéristique d'une entité est qu'elle peut être affectée à d'autres entités: un utilisateur est associé à un nœud et une taxonomie peut être affectée aux nœuds et aux utilisateurs.

Si ce que vous décrivez comme un travail peut être attribué à un utilisateur ou à un nœud, alors j'en ferais une entité. Si ce que vous pouvez "travailler" n'est qu'un type de contenu, je n'en ferais pas une entité.

kiamlaluno
la source
1

Si vous voulez dire cela en très peu de mots, vous pouvez dire que l'entité n'est qu'un élément de données dont Drupal a connaissance et peut être stockée n'importe où.

Haza
la source