taxonomy_term_count_nodes

Definition

taxonomy_term_count_nodes($tid, $type = 0)
modules/taxonomy/taxonomy.module, line 899

Description

Count the number of published nodes classified by a term.

Parameters

$tid The term's ID

$type The $node->type. If given, taxonomy_term_count_nodes only counts nodes of $type that are classified with the term $tid.

Return value

int An integer representing a number of nodes. Results are statically cached.

Code

<?php
function taxonomy_term_count_nodes($tid, $type = 0) {
  static $count;

  if (!isset($count[$type])) {
    // $type == 0 always evaluates TRUE if $type is a string
    if (is_numeric($type)) {
      $result = db_query(db_rewrite_sql('SELECT t.tid, COUNT(n.nid) AS c FROM {term_node} t INNER JOIN {node} n ON t.vid = n.vid WHERE n.status = 1 GROUP BY t.tid'));
    }
    else {
      $result = db_query(db_rewrite_sql("SELECT t.tid, COUNT(n.nid) AS c FROM {term_node} t INNER JOIN {node} n ON t.vid = n.vid WHERE n.status = 1 AND n.type = '%s' GROUP BY t.tid"), $type);
    }
    $count[$type] = array();
    while ($term = db_fetch_object($result)) {
      $count[$type][$term->tid] = $term->c;
    }
  }
  $children_count = 0;
  foreach (_taxonomy_term_children($tid) as $c) {
    $children_count += taxonomy_term_count_nodes($c, $type);
  }
  return $children_count + (isset($count[$type][$tid]) ? $count[$type][$tid] : 0);
}
?>
 
 

Drupal is a registered trademark of Dries Buytaert.