Mostrare separatemente termini di un solo vocabolario
Dopo una richiesta simile sul forum di DrupalItalia.org pubblico qui un piccolo snippet Drupal per mostrare solo i terminini relativi ad un determinato Vocabolario senza l'utilizzo di alcun modulo aggiuntivo.
Online esistono molte versioni e soluzioni differenti, personalmente ho preso spunto da questo articolo aggiungendo qualche piccola ed utile feature, ad ogni modo aggiungerò a fine articolo alcuni altri link di soluzioni simili.
Reperiamo e processiamo i termini
Apriamo il file template.php del nostro tema ed inseriamo il codice sottstante, preferibilmente alla fine del file.
function getTerm($vid, $link, $node, $tagsymbol, $labelname) {
foreach((array)$node->taxonomy as $term){
if ($term->vid == $vid){
if ($link){
$link_set[] = l((($tagsymbol)?$tagsymbol:'') . $term->name, taxonomy_term_path($term));
} else {
$link_set[] = (($tagsymbol)?$tagsymbol:'') . $term->name;
}
}
}
if (!empty($link_set)){
$link_set = (($labelname!=false)?$labelname:'') . implode('', $link_set);
}
return $link_set;
}
Mostriamo i termini
A questo siamo già pronti per mostrare i termini allegati ad un nodo relativi a uno o più vocabolari separatemente, richiamando semplicemente la funzione precedente.
Apriamo il file node.tpl.php o node-NODETYPE.tpl.php, commentiamo o eliminiamo del tutto la riga che contiene la variabile $terms ad esempio:
<?php
print $terms;
?>
Fatto questo, possiamo richiamare la nostra funzione in modo simile al codice seguente:
<?php
print getTerm(1, true, $node, '#', 'Tags: ');
?>
Quali variabili abbiamo passato alla funzione?
getTerm($vid, $link, $node, $tagsymbol, $labelname) dove:
- $vid: un numero intero maggiore o uguale ad 1, è l'ID del vocabolario dal quale estrarre i termini collegati al nodo;
- $link: False o True, possiamo decidere se stampare i termini come link o no;
- $node: avendo inserito lo snippet all'interno del file node.tpl.php abbiamo a disposizione l'oggetto $node, inseriamolo, è in questo oggett che abbiamo i riferimenti ad i termini allegati al nodo;
- $tagsymbol: un qualsiasi simbolo alfanumerico, di una o più lettere, anche uno spazio vuoto... quello che verrà inserito al posto di questa variabile verrà anteposto prima di ogni termine stampato, come accade qui sulla sinistra in questo blog;
- $labelname: una qualsiasi parola alfanumerica, possiamo inserire qualcosa che verrà anteposto una sola volta prima della lista dei termini mostrati, il risultato è sempre visibile qui sulla sinistra in questo blog;
E... se volessimo visualizzare i termini di 2 vocabolari differenti?
Possiamo fare anche questo, richiamando un'ulteriore volta la funzione getTerm() ovviamente cambiando le variabili passate come ad esempio l'ID del secondo vocabolario.
L'effetto è anch'esso visibile in questo blog sulla sinistra, in cui ho richiamato per 2 volte la funzione, rispettivamente la prima per i TAGS e la seconda per gli ARGOMENTI.
Conclusione
Spero di essere stato utile, aggiungo di seguito link e snippet completo inserito su GitHub, non si sa mai qualcuno volesse arricchirlo e/o condividerlo.






