Quels sont les avantages ou les inconvénients de l'utilisation de modules basés sur des références au lieu du module de taxonomie?

9

Je me demande comment décider d'utiliser le module de taxonomie de base ou le module de référence d'entité ?

Je n'ai pas utilisé le module de référence d'entité auparavant, mais j'ai utilisé le module de taxonomie (et certains modules connexes) sur 10 à 15 sites Web.

Quels sont les avantages ou les inconvénients de l'utilisation de modules basés sur des références au lieu du module de taxonomie?


Récemment, j'ai commencé à créer un site Web d'archives de magazines.

Il y a beaucoup de magazines. Ces magazines ont des problèmes. Chaque numéro contient des articles.


La partie la plus petite (et la plus profonde) est ici les articles .

Article

  • Numéro de page (plage):
  • Titre:
  • Auteur:
  • Type d'article:
  • Mots clés:
  • Magazine:
  • Problème:


Problème

  • Numéro de série:
  • Image de couverture:
  • Date publiée):
  • Magazine:


Magazine

  • La description:
  • Image de couverture:


entrez la description de l'image ici

Ici, il existe (au moins) 2 méthodes pour implémenter ce site:

1. Il y aura un type de contenu appelé articleet tous les autres (numéro, magazine, auteur) seront des termes taxonomiques (hiérarchiques). Il y aurait une hiérarchie entre le numéro et le magazine, etc.

2. Il y aura de nombreux types de contenu: article, numéro, magazine, auteur. Lors de la création d'articles; le numéro, le magazine et l'auteur peuvent être référencés, etc.

Donc, théoriquement, les deux façons semblent très similaires.

Y a-t-il quelqu'un qui a fait face à une situation similaire et pourriez-vous s'il vous plaît dire quelle méthode vous avez préférée, pourquoi?

herci
la source

Réponses:

9

Il existe également d'autres solutions à votre problème.

Collecte sur le terrain

Vous pouvez utiliser les modules d' affichage de collection de champs et de collection de champs pour stocker et organiser le contenu. En utilisant cette approche, le Issueet Magazineseront de type Collection de champs, Issueest un champ de Articleet Magazineest un champ de Issue. J'ai de l'expérience dans la mise en œuvre d'une telle structure. Dans mon cas, l'exigence était de Librarycontenir des livres (avec les champs Titre, Éditeur et ...), Chaque livre contient plusieurs volumes (Nombre de pages, traducteur, ...) et chaque volume contient également un nombre illimité d'autres éléments (comme le scan de certaines pages qui ne sont pas les mêmes parmi les livres).

J'ai implémenté cela en utilisant l'approche Field Collection et c'est très agréable. Vous pouvez facilement créer un lien pour modifier chaque élément individuel de chaque collection de champs et vous pouvez également filtrer par éléments de la collection de champs. J'ai publié une réponse aux éléments de groupe dans les vues par valeur dans la collection de champs qui montre comment travailler avec les vues de collection de champs

Pièce jointe de vue d'entité

Également connu sous le nom de module EVA .

"Eva" est l'abréviation de "Entity Views Attachment;" il fournit un plugin d'affichage de vues qui permet d'attacher la sortie d'une vue au contenu de n'importe quelle entité Drupal. Le corps d'un nœud ou d'un commentaire, le profil d'un compte d'utilisateur ou la page de liste d'un terme de taxonomie sont tous des exemples de contenu d'entité.

Vous pouvez utiliser EVA pour afficher uniquement les valeurs de champs pour un élément de contenu particulier, offrant un contrôle incroyable sur la flexibilité d'affichage et de formatage des champs. Par exemple, vous pouvez souhaiter que deux champs soient concaténés d'une manière spéciale. Vous pouvez ajouter vos champs à votre affichage EVA, définir le filtre contextuel sur NID, ajouter un champ de texte global: et utiliser des jetons pour formater vos champs avec HTML. N'oubliez pas d'exclure vos champs de l'affichage si vous comptez les utiliser ensemble dans un champ de texte global. Exemple: vous pouvez avoir une ville, un état et des champs zip. Vous pouvez les combiner dans un champ global: texte dans les vues pour les afficher en tant que «Ville, État ZIP». Lorsque vous gérez l'affichage pour votre type de contenu, ajoutez l'EVA qui vient d'être créé à l'affichage et chaque fois qu'un nœud du type est affiché, il transmet son nid à l'EVA et l'EVA renvoie les champs que vous sélectionnez, formaté comme vous le souhaitez. (la source :EVA et Entity Reference Use Case How-to )

Ce module est parfait, il attache une vue en tant que champ à des nœuds d'un type de contenu. J'ai utilisé ce module pour créer un Album. L'album contient singer(avec quelques informations sur chacun) et songsqui contient un fichier, un titre, une note et .... J'ai donc créé une vue de type EVA et je l'ai attachée à un nœud. Donc, sur la page du nœud de chaque chanteur, j'ai affiché cette vue qui obtient les informations appropriées du nœud. Les vues avec référence d'entité est un tutoriel parfait sur la façon d'utiliser ce module.

Termes taxonomiques VS Référence d'entité

Je vous recommande de lire la référence d'entité par rapport à la taxonomie et y a-t-il des avantages / mises en garde à utiliser la référence d'entité sur la référence de terme? Comme il est dit, les taxonomies sont mieux utilisées lors de l'organisation d'articles similaires de manière hiérarchique. Comme les balises .

La taxonomie vous permet d'utiliser le balisage gratuit (il peut être désactivé à l'aide du module Content Taxonomy ), ce qui permet la création de nouvelles balises à la volée. Il est très facile de modifier le squelette du contenu. En utilisant cette approche, les utilisateurs réguliers ou au moins certains utilisateurs authentifiés (qui n'ont aucune connaissance de la programmation) peuvent changer ce squelette. Le module de sélection hiérarchique est un exemple parfait d'une telle approche.

Même si la taxonomie est facile à utiliser mais je préfère moi-même Entity Reference, elle ouvre beaucoup de possibilités et d'évolutivité et permet de créer des structures très complexes. Le concept d'entité dans ce contexte ne se limite pas au contenu. Il peut s'agir de commentaires, d'utilisateurs, de taxonomies et .... Il est beaucoup plus évolutif, vous n'aurez donc pas à vous soucier de la personnalisation des types de contenu ou de leur modification à l'avenir (comme cela a été souligné dans Référence d'entité vs taxonomie ). Je pense que l'approche Entité est plus puissante que la taxonomie.

Il existe également d'autres combinaisons de ces approches qu'il n'est pas nécessaire de mentionner.

Quoi qu'il en soit, je vous recommande de bien comprendre l'approche Entity et ses modules associés. Si vous l'utilisez dans plusieurs projets, malgré sa complexité, il vous sera très facile de l'utiliser. Non seulement dans vos besoins actuels, mais aussi à l'avenir, cela sera un outil très fiable pour vous.

M ama D
la source
Merci beaucoup pour votre réponse détaillée. Cela m'a donné une bonne perspective sur l'utilisation des modules non taxonomiques. Il y a 2 choses à comprendre avant d'utiliser ce type de solutions: 1. La taxonomie a une fonction d'auto-complétion, ces modules ont-ils cette fonctionnalité? Parce que sans fonctionnalité de saisie semi-automatique sur la page d'ajout de nœud, il est presque impossible de créer un site Web. 2. Je peux utiliser le module de taxonomie de base lui-même sans autres modules, mais les solutions dont vous parlez ont besoin de modules supplémentaires et il est difficile de savoir "pour utiliser quels autres modules seraient bien" . Merci encore.
herci
2
Vous êtes le bienvenu. À propos de la question numéro 1, si vous utilisez le module d'entité et le champ de référence d'entité, oui, il est rempli automatiquement. Si vous utilisez la collection de champs, elle n'a pas besoin d'être complétée automatiquement car elle ne fait aucune relation, le nœud et ses enfants sont capsulés comme un seul package. À propos de la question 2, de nombreux modules dépendent du module Entity, donc quelle que soit l'approche que vous utilisez, vous devrez installer et activer ce module. De plus, je pense que la puissance qu'il vous fournit mérite d'installer quelques modules
M ama D
Bien que je recommande de rester à l'écart des collections de champs, l'entité avec les champs de référence d'entité est un outil formidable et très puissant. Combiné avec quelque chose comme CER (références d'entité correspondantes), vous obtenez des relations bidirectionnelles, donc dans votre cas, l'article saurait à quel numéro et magazine il appartient, ainsi que le problème de savoir l'article. Je dois noter que les vues ont déjà une recherche inversée pour les relations d'entité, mais cela est plus rapide et ouvre de nouvelles possibilités.
mediaashley
1
@mediaashley pour obtenir une relation de 2 façons dont vous n'avez pas besoin d'installer CER. En utilisant des relations, vous pouvez facilement y parvenir. Le drupal.stackexchange.com/questions/124893/… explique cela
M ama D
2
Je conseillerais de rester loin des collections de terrain pour autre chose que de simples cas d'utilisation. Lorsque vous traitez avec des exigences plus complexes, vous constaterez qu'à long terme, les collections de champs sont faiblement prises en charge dans d'autres modules. Un autre problème est que toutes les techniques drupales d'accès et de manipulation des données que vous avez utilisées ne s'appliquent pas aux données stockées dans les collections de champs. Bien sûr, il est toujours possible de faire toute la manipulation des données, mais la mise en œuvre est assez confuse. Allez avec la référence d'entité.
gbyte.co
8

Vous pouvez également avoir une autre combinaison, comme les articles et les numéros sont des nœuds et les magazines sont des taxonomies.

Il n'y a pas vraiment de bonne ou de mauvaise réponse pour cela, cela dépend des préférences personnelles, des exigences spécifiques du projet, etc.

Il est préférable d'utiliser des nœuds pour le contenu et des taxonomies pour la catégorisation de ce contenu, mais parfois, il peut être un peu trouble de savoir si quelque chose n'est qu'une catégorisation ou son propre contenu.

Par exemple, vos champs de type d'article et de mots clés sembleraient plus évidemment être des taxonomies, mais les numéros et les magazines pourraient vraiment aller dans les deux sens.

Une chose qui pourrait influencer votre décision est la fonctionnalité prête à l'emploi. Par exemple, il y a beaucoup plus de modules complémentaires pour les nœuds que pour les taxonomies, mais pour les taxonomies, vous sortez des pages de liste de boîtes (si vous les voulez). Il peut également y avoir des fonctionnalités liées à la hiérarchie qui sont plus faciles à sortir de la boîte avec une solution ou l'autre.

Les définitions de type de contenu ne sont qu'une partie de l'image. Vous devez absolument réfléchir à la manière dont vous souhaitez que le contenu soit présenté à l'utilisateur, à la manière dont vous souhaitez que l'utilisateur navigue dans la hiérarchie du contenu, comment ce contenu est-il lié aux autres contenus du site, comment voulez-vous que les administrateurs administrent ce contenu contenu, etc. Par exemple, voulez-vous une sorte de système de menu hiérarchique, voulez-vous que les gens puissent aller au magazine ou publier des pages ou que le contenu lié à ceux-ci ne soit visible que sur les pages de l'article. Voulez-vous avoir une recherche unique qui répertorie les 3 types de contenu (cela peut être moins trivial si certains sont des nœuds et d'autres sont des termes de taxonomie).

Planifiez tout cela et voyez quels modules sont disponibles pour vous aider à y parvenir. Vous trouverez peut-être une façon de réaliser plus facilement ce que vous voulez. Si ce n'est pas le cas, il vous suffit de choisir celui que vous pensez être le meilleur pour toutes les raisons que vous avez.

Parfois, vous pouvez aller dans un sens et trouver quelque chose qui rend difficile la réalisation de vos exigences. Si vous le planifiez à l'avance autant que possible, vous réduisez ce risque.

rooby
la source
Oui, je vous ai dit qu'il pourrait y avoir une autre combinaison. Je vais essayer les modules basés sur les références car j'ai déjà utilisé les solutions basées sur la taxonomie dans de nombreux projets. Je partagerai les résultats de cette affaire. Merci.
herci
5

Une autre considération lorsque vous utilisez des termes de taxonomie pour des choses comme "Magazine" est que vous perdrez des fonctionnalités telles que la révision et les commentaires sur ces éléments. Les révisions accordées peuvent être ajoutées avec un module tel que la révision de la taxonomie mais c'est un module avec une base d'installation très faible. Personnellement, je ferais confiance à Core's sur la gestion des révisions sur les nœuds.

Je peux penser à au moins une occasion où j'ai dû changer quelque chose d'un terme de taxonomie à un nœud après la mise en ligne d'un projet en raison de changements dans les exigences, et cela implique un peu de restructuration et de migration.

Vous constaterez probablement que si vous passez à l'utilisation d'autres types d'entités tels que les nœuds avec entity_reference, vous n'aurez aucun problème à effectuer le changement, car tout fonctionne de la même manière, mais cela vous donnera plus de flexibilité.

Paul Querol
la source
Merci, la partie révision est un bon point. Comme vous l'avez dit, la migration de la taxonomie vers le nœud est difficile. Très probablement, j'utiliserai une solution basée sur node + entity_reference . Merci encore pour votre réponse.
herci
3

Je ne dirai pas que c'est la réponse la plus précise, mais c'est comment j'y pense. Je vais vous expliquer avec quelques exemples.

J'utilise généralement des taxonomies pour classer les nœuds en fonction d'une abstraction. Par exemple, les informations peuvent être classées en sport, politique, etc.

Mais quand je veux avoir une référence comme un magazine, je pense à l'avenir. Réfléchissez quand vous voulez aider l'utilisateur à décider quel article choisir. Le classement du magazine (facteur d'impact peut-être) est une possibilité. Ou peut-être que je veux contacter ce magazine. Un terme ne m'aiderait pas dans cette situation, où s'il s'agissait d'un nœud ou d'une entité, il le serait.

D'un autre côté, vous devez faire certaines choses par vous-même. Par exemple, cliquer sur un terme de taxonomie vous mènerait à une page remplie de nœuds classés de ce terme. Alors maintenant, une vue et un filtre contextuel sont nécessaires, etc.

Alireza Tabatabaeian
la source
3

J'étais sûr que quelqu'un avait demandé pourquoi je resterais à l'écart des collections sur le terrain, mais le commentaire semble avoir été supprimé. De toute façon mes 2 cents:

Des taxonomies devraient être utilisées pour la classification et la catégorisation. Pas pour les relations de contenu. En reliant 2 éléments de contenu via un terme de taxonomie, vous utilisez 3 entités dont vous n'avez besoin que de 2.

D'après mon expérience, bien que les taxonomies soient désormais utilisables sur le terrain, elles ne sont pas des entités à part entière et ne devraient donc pas être utilisées comme «contenu».

Dans ce cas particulier, si votre magazine a du contenu (une description de ce que c'est, des détails sur sa commande, etc.), ou une "page" qui lui est propre, alors il doit s'agir d'un type de contenu, car c'est du contenu.

Les problèmes sont un peu ambigus, mais il y a de fortes chances que vous ayez un aperçu, etc., donc ils ont probablement une page et sont probablement du contenu aussi. Donc, un autre type de contenu.

Les articles sont évidemment des types de contenu.

En créant l'administrateur pour cela, vous pouvez utiliser la référence d'entité pour lier ces éléments de contenu, mais vous pouvez aller mieux.

De la même manière que @Drupalist a suggéré d'utiliser les collections de champs, vous pouvez utiliser des formulaires d'entité en ligne (je pense qu'une partie de la référence d'entité). Les collections de champs sont l'un de ces anciens modules qui étaient une excellente idée, pas très bien implémentée, et avec de nombreuses collisions avec d'autres modules. Bien qu'ils soient maintenant des entités, ils ont toujours des problèmes, et vous feriez mieux d'utiliser des entités à part entière (même des types de contenu) pour des choses comme vous, les auteurs, etc.

Les formulaires d'entité en ligne vous permettent de créer et de modifier des entités référencées, depuis l'intérieur de l'entité à partir de laquelle vous souhaitez référencer ... donc, créez / modifiez l'auteur à partir d'un article, ou référencez simplement celui qui a déjà été créé.

Ajoutez CER et vous obtiendrez automatiquement une référence de l'auteur à l'article, à l'article au numéro et au dossier dans le Magazine, ou quelle que soit la direction dans laquelle vous allez. Cela présente des avantages dans la façon dont vos vues fonctionnent, mais vous permet également d'afficher une liste d'articles sur la page de l'auteur et les informations sur l'auteur sur la page de l'article, le tout sans aucune vue.

Faites un tour complet vers les taxonomies, vous les utiliseriez ensuite pour "taguer" des articles, etc. avec ... "pêche", "voiture", "ordinateurs", etc. ou auteur qui a du contenu / écrit sur cette balise.

J'ai essayé d'être bref, alors j'espère que cela aide et a du sens. Je l'ai fait sur des dizaines de sites. Événements sportifs mondiaux, sites de réservation de voyages / vacances, diffuseurs internationaux, boissons, œuvres de bienfaisance, etc. Robuste, puissant et vous couvre pour les besoins imprévus.

mediaashley
la source
Merci pour votre réponse. Cela a vraiment du sens et l'expérience de lecture est très importante pour moi.
herci