function taxonomy_select_nodes in Drupal 7
Same name and namespace in other branches
- 4 modules/taxonomy.module \taxonomy_select_nodes()
- 5 modules/taxonomy/taxonomy.module \taxonomy_select_nodes()
- 6 modules/taxonomy/taxonomy.module \taxonomy_select_nodes()
Return nodes attached to a term across all field instances.
This function requires taxonomy module to be maintaining its own tables, and will return an empty array if it is not. If using other field storage methods alternatives methods for listing terms will need to be used.
Parameters
$tid: The term ID.
$pager: Boolean to indicate whether a pager should be used.
$limit: Integer. The maximum number of nodes to find. Set to FALSE for no limit.
$order: An array of fields and directions.
Return value
An array of nids matching the query.
2 calls to taxonomy_select_nodes()
- taxonomy_term_feed in modules/
taxonomy/ taxonomy.pages.inc - Generate the content feed for a taxonomy term.
- taxonomy_term_page in modules/
taxonomy/ taxonomy.pages.inc - Menu callback; displays all nodes associated with a term.
File
- modules/
taxonomy/ taxonomy.module, line 204 - Enables the organization of content into categories.
Code
function taxonomy_select_nodes($tid, $pager = TRUE, $limit = FALSE, $order = array(
't.sticky' => 'DESC',
't.created' => 'DESC',
)) {
if (!variable_get('taxonomy_maintain_index_table', TRUE)) {
return array();
}
$query = db_select('taxonomy_index', 't');
$query
->addTag('node_access');
$query
->condition('tid', $tid);
if ($pager) {
$count_query = clone $query;
$count_query
->addExpression('COUNT(t.nid)');
$query = $query
->extend('PagerDefault');
if ($limit !== FALSE) {
$query = $query
->limit($limit);
}
$query
->setCountQuery($count_query);
}
else {
if ($limit !== FALSE) {
$query
->range(0, $limit);
}
}
$query
->addField('t', 'nid');
$query
->addField('t', 'tid');
foreach ($order as $field => $direction) {
$query
->orderBy($field, $direction);
// ORDER BY fields need to be loaded too, assume they are in the form
// table_alias.name
list($table_alias, $name) = explode('.', $field);
$query
->addField($table_alias, $name);
}
return $query
->execute()
->fetchCol();
}