This function returns an array of taxonomy term objects. It is much like taxonomy_get_tree(), and it does in fact use this function. We had a client that wanted a grid of product categories with an image for each term, but only for terms that have at least X associated nodes. This problem was solved using the function below, as well as another custom function to alter the views query (I'll post about this later).
<?php
/**
* Returns an array of taxonomy terms that have been associated with at least X nodes
*
* @param $vid
* The vocabulary id
* @param $min_items
* The minimum number of items that have been associated with this term
* @return
* An array of taxonomy term objects
*/
function mymodule_get_terms_by_count($vid, $min_items = -1){
$terms = taxonomy_get_tree($vid);
$items = array();
foreach ($terms as $term) {
$count = taxonomy_term_count_nodes($term->tid);
if ($count == -1 || $count >= $min_items) {
$items[] = $term;
}
}
return $items;
}
?>
I'd like to also mention that I toyed with the idea of adding a $max_items variable. It's simple enough to do, but I figured (maybe incorrectly) that you wouldn't ever need to say, "Give me all terms that have between 10 and 30 associated records."


Add new comment