web-dev-qa-db-fra.com

Comment utiliser les filtres contextuels et les relations pour afficher des articles connexes?

J'ai donc essayé de comprendre cela pendant presque toute la journée. Je l'ai fait fonctionner essentiellement dans l'aperçu à un moment donné, mais maintenant il ne semble plus fonctionner du tout.

Cas d'utilisation: chaque nœud publié avec le type de contenu "Article" est livré avec un champ Taxonomie pour les balises incluses. Ce que j'essaie de faire, c'est de créer un bloc qui apparaît sous l'article avec une série de miniatures qui pointent vers d'autres articles. Ces articles sont à leur tour liés en fonction des balises utilisées dans chaque article.

Donc, la question est:

  1. Quelle serait une bonne façon de configurer cela en utilisant des filtres contextuels et des vues pour que la vue elle-même voit automatiquement les field_tags utilisés comme référence de terme de taxonomie dans un article et qu'elle affiche automatiquement la sortie en fonction des balises de chaque article?

J'ai essayé de configurer le filtre contextuel pour être conscient que les termes seraient dans le type de contenu: articles via le filtre Relations, mais franchement, je suis un peu perplexe quant à ce que je dois faire pour même accomplir cela.

8
John Riley

J'ai implémenté la même chose dans un projet en Drupal 7 pour afficher les produits du même catalogue.

Vous pouvez créer une vue du contenu de l'article et créer des filtres contextuels pour les balises. Il affichera tout l'article de ces balises.

Vous pouvez suivre l'étape ci-dessous:

  • Ajoutez un filtre contextuel de balises. Bouton radio coché "Fournir la valeur par défaut".
  • Sélectionnez "Taxonomy term Id from url" dans la liste déroulante des types.
  • Cochez la case "Charger le filtre par défaut à partir de la page du nœud".
  • Cochez la case "Limiter les termes par vocabulaire".
  • Dans la section Vocabulaires, cochez la case Vocabulaires (balises) que vous souhaitez ajouter un filtre dans les vues.
  • Dans la section plus, cochez la case "Autoriser plusieurs valeurs", afin que plusieurs balises puissent utiliser filtrer le terme.

Vous pouvez trouver l'image ci-dessous pour référence.

Vous devez également ajouter un filtre contextuel de l'ID de nœud et suivre l'étape ci-dessous, de sorte que la page de nœud actuelle ne s'affichera pas dans la section des vues associées.

  • Ajouter du contenu: filtre contextuel Nid dans les vues.
  • Cochez la case d'option "Fournir la valeur par défaut" et sélectionnez "ID de contenu de l'URL" dans la liste déroulante des types.
  • Dans la section plus du filtre contextuel, cochez la case "Exclure".

display related product in views of same category

1
Jayendra Kainthola

Avez-vous essayé d'utiliser similaire par termes ?

(modifier) ​​Le problème avec les arguments de taxonomie de Views est que la taxonomie est maintenant contenue dans un champ et non un code de module de taxonomie vaudou. Pour cette raison, une partie de l'API de taxonomie dans Drupal 6 n'est pas disponible dans Drupal 7.

J'utilise le module Context avec Vues Arguments from Context . J'ai fait n correctif qui l'a porté Drupal 7. Cela donne une autre option sous Filtre contextuel dans les vues pour obtenir les arguments basés sur le contexte ou les objets et entités chargés à ce temps.

Il s'agit d'une fonction particulièrement utilisée:

function taxonomy_node_get_terms($node, $key = 'tid') {
static $terms;
  if (!isset($terms[$node->vid][$key])) {
    $query = db_select('taxonomy_index', 'r');
    $t_alias = $query->join('taxonomy_term_data', 't', 'r.tid = t.tid');
    $v_alias = $query->join('taxonomy_vocabulary', 'v', 't.vid = v.vid');
    $query->fields( $t_alias );
    $query->condition("r.nid", $node->nid);
    $result = $query->execute();
    $terms[$node->vid][$key] = array();
    foreach ($result as $term) {
      $terms[$node->vid][$key][$term->$key] = $term;
      }
  }
return $terms[$node->vid][$key];
}

Il n'aurait pas dû être supprimé de Drupal core. Il trouvera les termes de taxonomie que vous utilisez si vous lui passez l'objet nœud actuel.

0
Adam S