Term Display theming
You are browsing documentation for an older version of Drupal, which is not supported any longer, and the information may not be correct. See current documentation for Contributed modules
Theming terms
Both the List and Custom display options use theme functions, theme_term_display_list and theme_term_display_custom respectively.
The Load display option places data into the $node object, from which your theme can retrieve it, format it, and place it anywhere in the node template.
The format is as follows:
[term_display] => Array
(
[7] => Array // the vocabulary ID
(
[vocabulary_name] => // the vocabulary name, run through a check_plain
[terms] => Array // an array of terms, in the same format as the $node->taxonomy array.
)
The array of terms is an array of objects, each keyed by its term id (tid):
[taxonomy] => Array
(
[56] => stdClass Object
(
[tid] => 56
[vid] => 2
[name] => NAME
[description] =>
[weight] => 0
)
See below for examples of what can be done with this.
Theming examples
The following examples of code should go in your theme's template.php, in either _phptemplate_variables()'s node case (Drupal 5) or theme_preprocess_node (Drupal 6). These will add an extra variable to be used in your node.tpl file.
Inline links
These are the same as the default terms.
$vid = MY_VID; // fill in here
if ($vars['node']->term_display[$vid]) {
foreach ($vars['node']->term_display[$vid]['terms'] as $tid => $term) {
$term_links['taxonomy_term_'. $term->tid] = array(
'title' => $term->name,
'href' => taxonomy_term_path($term),
'attributes' => array('rel' => 'tag', 'title' => strip_tags($term->description))
);
}
$vars['my_vocab'] = theme('links', $term_links, array('class' => 'links inline'));
// $my_vocab is now available to node.tpl
}
Definition list by vocabulary
This puts all loaded vocabs into a single definition list, with the vocabulary name. With some CSS formatting, this can make a nice block of meta data; extra data can be added.
foreach ($vars['node']->term_display as $vid => $vocab_data) {
$meta_dl["vocab_$vid"] = _mytheme_terms_dl_item($vocab_data);
}
// you can add extra DL items here
$vars['meta_dl'] = '<dl>'. implode("\n", $meta_dl) .'</dl>';
## and a helper function to place elsewhere in template.php:
/**
* Helper function to turn term_display loaded terms into DL items.
*/
function _mytheme_terms_dl_item($vocab_data) {
$dt = $vocab_data['vocabulary_name'];
foreach ($vocab_data['terms'] as $tid => $term) {
$term_links['taxonomy_term_'. $term->tid] = array(
'title' => $term->name,
'href' => taxonomy_term_path($term),
'attributes' => array('rel' => 'tag', 'title' => strip_tags($term->description))
);
}
$dd = theme('links', $term_links, array('class' => 'links inline'));
return "<dt>$dt</dt>\n<dd>$dd</dd>\n";
}
Help improve this page
You can:
- Log in, click Edit, and edit this page
- Log in, click Discuss, update the Page status value, and suggest an improvement
- Log in and create a Documentation issue with your suggestion