Már nem először futok bele a problémába, hogy egy-egy tartalom megjelenítésekor a Drupal az összes kifejezést (taxonomy – term) ömlesztve, egy listában nyomja ki, de csak most volt annyira fontos, hogy megoldást keressek. Másnak is szüksége lehetett erre, mert a google://drupal+terms+by+vocabulary első két találata (főleg a második) használható megoldást adott.
Először az aktuális smink template.php állományába kell egy új függvényt létrehozni, ami egy node azonosítót (nid) vár paraméterként.
function phptemplate_print_terms( $nid ) {
$vocabularies = taxonomy_get_vocabularies();
$output = '<ul>';
foreach( $vocabularies as $vocabulary ) {
if ( $vocabularies ) {
$terms = taxonomy_node_get_terms_by_vocabulary( $nid, $vocabulary->vid );
if ( $terms ) {
$links = array();
$output .= '<li><strong>' . $vocabulary->name . '</strong>: ';
foreach ( $terms as $term ) {
$links[ 'taxonomy_term_'. $term->tid ] = array(
'title' => $term->name,
'href' => taxonomy_term_path($term),
'atributes' => array(
'rel' => 'tag',
'title' => strip_tags($term->description)
)
);
}
$output .= theme('links', $links);
$output .= '</li>';
}
}
}
$output .= '</ul>';
return $output;
}
Majd a a node.tpl.php a megfelelő helyen ki kell nyomni
<div class="terms_by_vocab">
<?php echo phptemplate_print_terms( $nid ) ?>
</div>
Voálá