web-dev-qa-db-fra.com

Création de la liste de nœuds similaires dans Drupal 7 / Vues 3

Copie de drupal.stackexchange.com dans l'espoir d'obtenir plus de réponses ici:

Je fais face à un problème assez commun d'affichage d'une liste de nœuds similaires à celle actuelle. Un nœud similaire est défini comme l'un ayant au moins un terme taxonomie selon lequel le nœud actuel a. Il existe peu de solutions disponibles en tant que modules, mais les modules que j'ai trouvés (spécifiquement similaires en termes) sont en phase bêta (comme dans "ne fonctionne pas correctement") pour Drupal 7.

J'ai également trouvé quelques solutions basées sur des vues et des filtres contextuels (tels que http://scito.ch/content/show-related-nodes-block-based-taxonomy-terms-views-3- et-drupal-7 ) ou relations. J'aime beaucoup de cette façon, car cela me permet d'installer des modules supplémentaires et que des vues étant activement développées et prises en charge, je préférerais les utiliser plutôt que toute solution personnalisée. Le problème que je ne peux pas me contenter est de trier des "nœuds similaires" par le nombre de termes qu'ils partagent. Par exemple, si j'ai "iphone 4s" Node avec termes "gadget", "pomme" et "téléphone", je veux des nœuds similaires dans l'ordre suivant:

  1. IPhone 3 (Apple, gadget, téléphone)
  2. IPad (pomme, gadget, tablette)
  3. Mac (Apple, ordinateur)
  4. Bramley (pomme, fruit, arbre)

Comment puis-je traiter des nœuds dans cette vue par le nombre de termes qu'ils partagent?

Cette question consiste à construire une vue, veuillez ne pas suggérer de modules ni de solutions personnalisées basées sur PHP. Merci.

30
  1. Créer une vue de bloc
  2. Ajouter un filtre contextuel -> Contenu: NID -> Fournissez la valeur par défaut -> ID de contenu de l'URL
  3. Ajouter une relation -> Contenu: Taxonomie Conditions sur le nœud -> Spécifiez le vocabulaire approprié
  4. Ajouter une relation -> Terme de taxonomie: Contenu en utilisant le vocabulaire comme spécifié ci-dessus -> Cocher Office requiert cette relation
  5. Activer l'agrégation de vues (Remarque: la flèche dans la capture d'écran ci-dessous monte sur le mauvais endroit et doit pointer vers 2 rangées ci-dessous où elle est)
  6. En supposant que vous inscrivez uniquement le titre, modifiez le champ de titre pour utiliser la relation que vous avez configurée dans # 4 ci-dessus.
  7. Ajouter des critères de contenu neufs: NID. Dans les paramètres d'agrégation, sélectionnez Compte. Utilisez la relation entre # 4 et trier descendances
  8. Ajouter un filtre contextuel -> Contenu: NID -> Utiliser la relation à partir de # 4 -> Fournissez la valeur par défaut - ID de contenu de l'URL -> Faites défiler vers le bas et développez "Plus" puis cochez "Exclure" pour supprimer le nœud actuel de la vue

** Voir le commentaire de @ garret-albright ci-dessous pour avoir testé cela dans l'aperçu de l'interface utilisateur. Amateur

Related node view

81
nmc

devinez quoi - il y a modules pour cela aussi: D

je peux recommander similaires en termes vous donner cette vue sans configuration tracas.

2
rémy

Ceci est une solution alternative liée à cette question. Cependant, il pourrait ne pas s'appliquer à chaque cas, mais si vous pouvez l'utiliser, c'est plus simple (et plus sûr que l'agrégation à mon avis).

Je vais utiliser panneaux . Une fois que vous avez créé un panneau pour afficher votre entité (nœud ou quoi que ce soit d'autre), vous pouvez ajouter plusieurs vues et leur montrer à côté du contenu. L'une de ces vues va être notre contenu connexe.
Ainsi, les panneaux sont la seule limitation. peut-être il est possible d'utiliser des mini-panneaux et de le représenter comme un bloc, je n'ai pas essayé moi-même.

Conditions préalables

  • Vues (d'oh!)
  • Panneaux
  • Vues View Content Pane: Pas besoin de télécharger, c'est dans ctoolsmodule téléchargé avec vues.
  • Gestionnaire de page: identique au volet de contenu de vues (facultatif/fortement recommandé).


La vue

  1. Créez votre vue comme vous le feriez normalement, mais do non le créera comme un bloc ou une page. Décochez les deux.

  2. Dans la page Configuration des vues Créer un concernant Taxonomie Terme sur l'entité.

  3. Créez un filtre contextuel pour filtrer: Taxonomie Terme: Terme ID .

  4. Créez un autre filtre contextuel : ID d'entitéou Contenu: NID Si c'est un nœud.

    • Tout en créant celui-ci, en bas, il existe un champ de bord qui a l'option: exclure . Vérifiez-le comme indiqué.

  5. Maintenant, en cliquant sur ajoutCréez un nouvel affichage de type Volet de contenu .

  6. Dans la zone de configuration d'affichage (nommé: Paramètres du volet) Ouvrir Entrée d'argument . Vous devriez avoir 2 options:

    • contenu: NID Source: Définissez la source comme du contexte. Définir c'est Contexte requiscomme ID de contenu(Si vous n'utilisez pas de noeud, cela peut être [~ # ~ # ~] ID [~ # ~].
    • Terme de taxonomie: Source de l'ID de pointe: Définissez la source comme du contexte. Définissez le contexte requis Contextecomme ID du terme.

Félicitations! Vous avez terminé de créer votre vue. Il est temps pour un panneau (je ne vais pas expliquer beaucoup de choses sur la création d'un groupe spécial car il dépasse la portée de ce Q/A).

Le panel

  1. Créez un panneau (ou activez le panneau par défaut du nœud /% du nœud et ajoutez une variante).

  2. Dans onglet Contexte , créez un concernant Taxonomie Terme sur l'entité.

  3. Cliquez sur Ajouter un contenu dans l'une des vitres.

  4. Si vous n'avez pas changé la catégorie de la vue, c'est dans Vues VuesAjoutez-le. Il demandera une pièce d'identité d'entité et un identifiant à terme deux sont disponibles maintenant dans votre contexte de panels, définissez-les.

  5. Maintenant, lorsque le panneau est affiché, tout le contenu avec le même terme excluant le contenu de cette page est affiché.

Views Configuration

Contextual filter

Argument input

P.s importants:

Cette méthode est essayée et cela fonctionne parfaitement, mais au moment de la rédaction de cet article, ctools avait un bug. Il y a un patch pour cela: https://www.drupal.org/node/2195211

0
hkoosha