Come faccio a creare un conteggio dei nodi per ciascun termine di categoria in Drupal?

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

  •  08-07-2019
  •  | 
  •  

Domanda

Voglio creare un elenco di termini di categoria (contenuti in un blocco), a cui ogni termine deve essere seguito da un conteggio del numero di nodi con quel termine, ad es .:

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

Esistono numerosi moduli che creano dinamicamente interi elenchi come questo, ma ho scoperto che tutti hanno degli svantaggi per i miei scopi. Ho letteralmente bisogno di qualcosa del genere:

<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>

vale a dire. Ho solo bisogno che il conteggio sia dinamico, non l'intero elenco (va bene perché i termini stessi non cambieranno). Ho sentito che la funzione Drupal taxonomy_term_count_nodes () può essere utile, ma non riesco a trovare alcuna semplice informazione riguardo alla sua implementazione.

È stato utile?

Soluzione

Quali informazioni vuoi sulla sua implementazione? La documentazione sembra abbastanza chiara ...

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

Altri suggerimenti

L'ho fatto alcune volte. IMO stai meglio usando Views per creare una vista Nodo che elenca solo i termini di tassonomia, quindi usa http: / /drupal.org/project/views_groupby modulo per mettere il numero di nodi con quel termine accanto al termine. L'esempio nella views_groupby documentazione ti dice cosa devi sapere.

Il tuo modulo personalizzato sarà ovviamente un po 'più flessibile, ma alla fine inutile dato quanto sopra.

Inoltre, non sono sicuro di quali informazioni manchi nella documentazione, forse un esempio aiuta. Di seguito verrà creato un elenco ordinato di tutti i termini all'interno di un vocabolario, con i relativi conteggi dei nodi allegati (non testati, quindi potrebbero esserci errori di battitura).

// 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 non esce in Drupal 7

Drupal 7 ha un'altra API equivalente per ottenere i nodi del termine tassonomia. ecco l'API https://api.drupal.org/api /drupal/modules!taxonomy!taxonomy.module/funct ...

Restituirà il valore dell'array, potremmo contare i valori dell'array con php

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

In Drupal 7, puoi effettivamente farlo con Views. Non sono richiesti codici o moduli aggiuntivi. Vedi Come utilizzare l'aggregatore di visualizzazioni per Creare un blocco di conteggio dei termini della tassonomia? per i dettagli.

Se si ottengono solo 10 risultati con taxonomy_select_nodes, perché Pager è impostato su true per impostazione predefinita in questa funzione, quindi sarà necessario eseguire questa operazione con 'FALSE':

$data = taxonomy_select_nodes($term_id, FALSE);
$count = count($data);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top