Drupal 7 visualise le filtre contextuel (taxonomie: affichage récapitulatif), affichant un nom de terme lisible au lieu de l'ID de terme

9

À mon avis, j'utilise un filtre contextuel - avec une « sortie récapitulative » par défaut - pour filtrer mes résultats par terme de taxonomie .

Le problème est que le résultat récapitulatif est groupé par une liste d' ID de termes de taxonomie (y compris un nombre de nœuds) et non de noms d'ID de termes lisibles par l'homme.

  • 1 (21)
  • 2 (16)
  • etc.

Est-il possible de changer (ou d'accrocher) la sortie de vue du résumé, en ne listant pas ses term-id, mais le term-id-name?

  • Nom du terme A (21)
  • Nom du terme B (16)

(Cela ne me dérange pas si l'URL de demande réelle reste la même.)

Mon objectif est de créer un format de sortie plus lisible de mon résumé de termes de taxonomie, qu'un utilisateur final peut comprendre.

Stefan Looij
la source
J'ai trouvé la même question posée sur Comment utiliser l'argument Vues pour renvoyer les noms de termes de taxonomie et non les ID de terme? et une discussion active à ce sujet sur Définir le titre de la vue sur le nom du terme lorsque l'argument de filtre est l'ID du terme . Ils livrent un patch, mais sans succès.
Stefan Looij

Réponses:

7
  1. Définissez votre vue sur les champs et exposez le champ qui contient le terme de taxonomie associé.

  2. Définissez votre filtre contextuel pour filtrer un terme de taxonomie et sélectionnez pour inclure un validateur.

  3. Réglez le validateur sur le terme de taxonomie et cochez la case correspondant à votre vocabulaire.

  4. Sélectionnez l'option pour le type de valeur de filtre comme 'Nom du terme converti en ID de terme.

  5. Enregistrez le filtre et accédez à la zone d'aperçu. Si vous entrez le nom du texte de votre terme, vous devriez voir le contenu souhaité.

Si vous transmettez les informations de l'URl, vous devrez peut-être également cocher la case `` Transformer les tirets dans l'URL en espaces dans les valeurs de filtre de nom de terme '', car le nom de l'ordinateur utilise des tirets.

Pierre de taille
la source
Quelque chose que j'avais oublié, c'est que lors de la sélection d'un filtre contextuel, il doit être pour le terme de taxonomie (nom) et utiliser une relation avec le champ sur les nœuds que vous affichez pour le terme lui-même, plutôt que le contenu: my_term_field_name
CR47
Cette réponse vous indique comment faire fonctionner le filtre contextuel avec le nom lisible par l'homme du terme de taxonomie, mais elle ne répond pas à la question. La question est de savoir comment afficher le nom lisible par l'homme du terme de taxonomie dans les résultats filtrés.
BrokenBinary
5

Copiez le fichier "views_view-summary.tpl.php" dans votre dossier "modules / contrib / views / theme". (Vous pouvez le rendre spécifique ou bloquer en ajoutant un suffixe de nom de fichier.)

Remarque: Si vous l'utilisez comme affichage-affichage administrateur, assurez-vous de copier ce fichier dans le dossier de thème administrateur, pas votre dossier de thème par défaut!

Vous n'avez besoin d'aucune modification dans vos paramètres d'affichage. Ajustez simplement votre tpl-override sur les lignes suivantes, et vos Term-ID sont convertis en Term-names lisibles:

<div class="item-list">
  <ul class="views-summary">
    <?php foreach ($rows as $id => $row): ?>
    <li>
      <a href="<?php print $row->url; ?>"<?php print !empty($row_classes[$id]) ? ' class="'. $row_classes[$id] .'"' : ''; ?>>
        <?php
        /* begin replacement */
        $term_object = taxonomy_term_load($row->link);
        print  $term_object->name; 
        /* end replacement*/
        ?>
      </a>
      <?php if (!empty($options['count'])): ?>
      &nbsp;(<?php print $row->count?>)
      <?php endif; ?>
    </li>
    <?php endforeach; ?>
  </ul>
</div>
Stefan Looij
la source