Comment créer un nombre de nœuds pour chaque terme de catégorie dans Drupal?

StackOverflow https://stackoverflow.com/questions/1639267

  •  08-07-2019
  •  | 
  •  

Question

Je souhaite créer une liste de termes de catégorie (contenus dans un bloc), chaque terme devant être suivi d'un compte du nombre de nœuds contenant ce terme, par exemple:

Cats (5)
Dogs (4)
Elephants (2)

Un certain nombre de modules créent des listes entières comme celle-ci de manière dynamique, mais j’ai constaté qu’ils présentaient tous des inconvénients. J'ai littéralement besoin de quelque chose comme ça:

<ul>
<li><a href="mylink">Cats</a> (<?php ...some code... ?>)</li>
<li><a href="mylink">Dogs</a> (<?php ...some code... ?>)</li>
<li><a href="mylink">Elephants</a> (<?php ...some code... ?>)</li>
</ul>

I.e. Je veux seulement que le compte soit dynamique, pas toute la liste (c'est correct car les termes eux-mêmes ne changeront pas). J'ai entendu dire que la fonction Drupal taxonomy_term_count_nodes () peut être utile, mais je ne trouve aucune information simple concernant son implémentation.

Était-ce utile?

La solution

Quelles informations souhaitez-vous sur sa mise en œuvre? La documentation semble assez claire ...

<?php print taxonomy_term_count_nodes($term_id); ?>

Autres conseils

Je l'ai fait plusieurs fois. OMI, vous feriez mieux d’utiliser Views pour créer une vue de nœud qui répertorie uniquement les termes de taxonomie, puis utilisez la http: / /drupal.org/project/views_groupby module pour mettre le nombre de nœuds avec ce terme à côté du terme. L'exemple de la la documentation de views_groupby vous explique ce que vous devez savoir.

Votre module personnalisé sera évidemment un peu plus flexible, mais finalement inutile compte tenu de ce qui précède.

Je ne suis pas sûr non plus des informations qui vous manquent dans la documentation - peut-être qu'un exemple pourrait vous aider. Ce qui suit va créer une liste ordonnée de tous les termes d’un vocabulaire, avec le nombre de leurs nœuds attachés (non testé, donc il peut y avoir des fautes de frappe).

// Adjust this to the id of the vocabulary holding your terms
$vid = 1;
// Grab all terms in that vocabulary
$terms = taxonomy_get_tree($vid);
$items = array();
foreach ($terms as $term) {
  // Get the number of (published) nodes with that term
  $count = taxonomy_term_count_nodes($term->tid);
  // Assemble your link text
  $text = $term->name . ' (' . $count . ')';
  // Set this to the path you want to link to (default term views used here)
  $path = 'taxonomy/term/' . $term->tid;
  // Turn the above into a rendered link
  $link = l($text, $path);
  // Add to items
  $items[] = $link;
}
// Render array as an ordered list
$list = theme('item_list', $items, NULL, 'ol');

print $list;

Taxonomy_term_count_nodes n'est pas fermé dans Drupal 7

Drupal 7 a une autre api équivalente pour obtenir les nœuds de taxonomie. voici l'api https://api.drupal.org/api /drupal/modules!taxonomy!taxonomy.module/funct ...

Cela retournera la valeur du tableau, nous pourrions compter les valeurs du tableau avec php

<?php 
  $data = taxonomy_select_nodes($tid);
  $count = count($data);

Dans Drupal 7, vous pouvez le faire avec Views. Aucun codage ou module supplémentaire n'est requis. Voir Comment utiliser Views Aggregator pour Créer un bloc de nombre de termes de taxonomie? pour plus de détails.

Si vous n'obtenez que 10 résultats avec taxonomy_select_nodes, cela est dû au fait que Pager est défini sur true par défaut dans cette fonction.

$data = taxonomy_select_nodes($term_id, FALSE);
$count = count($data);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top