Taxonomy: Taxonomy Terms mostrati raggruppati x vocabolario senza l'ausilio di alcun modulo

5 contenuti / 0 new
Ultimo contenuto
Taxonomy: Taxonomy Terms mostrati raggruppati x vocabolario senza l'ausilio di alcun modulo

Al momento io sono in grado di gestire, senza alcun modulo aggiuntivo, il gruppo complessivo dei termini di tutti i vocabolari associati ad un dato nodo, direttamente all'interno del file node.tpl.php, sfruttando il contenuto della variabile $terms in questo modo:

if ($taxonomy) {
$metalinks = '<div class="tags clear-block block">';
$metalinks .= '<div class="meta">';
$metalinks .= '<h4>' . t('Similar topics') . '</h4>';
$metalinks .= '<div class="terms">' . $terms . '</div>';
$metalinks .= '</div>';
$metalinks .= '</div>';
print $metalinks;
}

Però io vorrei poter separare i termini dei vocabolari usati come "Categorie del sito" da quelli di uno specifico vocabolaro usato solo per associare tag/keywords ai content e vorrei che questa cosa fosse possibile senza l'ausilio di moduli.

Vorrei capire come posso fare, quali variabili utilizzare e come utilizzarle.

Mi piacerebbe che il codice su indicato diventasse simile a questo:

if ($taxonomy) {
$metalinks = '<div class="tags clear-block block">';
$metalinks .= '<div class="meta">';
$metalinks .= '<h4>' . t('Similar topics') . '</h4>';
$metalinks .= '<div class="terms">' . $categorie . '</div>';
$metalinks .= '<h4>' . t('Similar tags') . '</h4>';
$metalinks .= '<div class="terms">' . $tags . '</div>';
$metalinks .= '</div>';
$metalinks .= '</div>';
print $metalinks;
}

oppure

if ($taxonomy) {
$metalinks = '<div class="tags clear-block block">';
$metalinks .= '<div class="meta">';
$metalinks .= '<h4>' . t('Similar topics') . '</h4>';
$metalinks .= '<div class="terms">' . $vocab-cat1 . '</div>';
$metalinks .= '<div class="terms">' . $vocab-cat2 . '</div>';
$metalinks .= '<div class="terms">' . $vocab-cat3 . '</div>';
$metalinks .= '<h4>' . t('Similar tags') . '</h4>';
$metalinks .= '<div class="terms">' . $vocab-tags . '</div>';
$metalinks .= '</div>';
$metalinks .= '</div>';
print $metalinks;
}

Potete aiutarmi?

Come fa il modulo Tagaelic a raggruppare per vocabolario tutti i termini associati ad un content all'interno del blocco "Tags for current post"?? ... mi interesserebbe proprio qualcosa di simile a quel blocco però con i termini mostrati anche inline e non solo in verticale.

forse non ho capito...
comunque, qui: http://11heavens.com/putting-some-order-in-your-terms
mi pare che non siano richiesti moduli aggiuntivi

Ciao, ti mostro la mia soluzione :

Aggiungi in Template.php del tuo tema il seguente codice:

function getTerm($label, $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;
}

mentre nel file node.tpl.php utilizzi il seguente codice per richiamare la funzione precedente permettendoti di stampare solo i termini di un solo Vocabolario:

<?php
print getTerm(false, 2, true, $node, '#', '<b>Tags:</b> ');
?>

getTerm($label, $vid, $link, $node, $tagsymbol, $labelname)

  • $label = ... non mi ricordo a che serviva, ci sta che è un refuso ....
  • $vid = è l'id del Vocabolario
  • $link = puoò essere anche False ed ti permette di rendere le voci del vocabolario Cliccabili o meno come link
  • $node = è l'oggetto node che contiene le riferimenti ai termini
  • $tagsymbol = puoi inseririre qualsiasi testo, numero simobolo ecc.. verrà "anteposto" ad ogni Termine del vocabolario
  • $labelname = è cioè che verrà inserito prima dell'elenco dei termini.

... questo codice ha l'effetto seguente, visibile nel mio blog http://www.pillsofbits.com

Ovvero inserendo:

        <div class="terms-node terms-inline">
            <?php
               
print getTerm(false, 2, true, $node, '#', '<b>Tags:</b> ');
 
?>

        </div>
        <div class="terms-node terms-inline">
            <?php
               
print getTerm(false, 1, true, $node, '~', '<b>Argomento:</b> ');
           
?>

        </div>

Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.

WeBrain Solution | Pillsofbits Of Bits

ecco il link dal quale ho tratto ispirazione dello snippet precedente:
http://timonweb.com/how-to-separate-drupal-taxonomy-terms-output-by-voca...

ti allego anche lo snippet completo e corrett del refuso hostato su GitHub
https://gist.github.com/758704

Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.

WeBrain Solution | Pillsofbits Of Bits

Molto interessante ragazzi.... darò un'occhiata + approfondita al + presto ...e correggerò il tema.
Ho diverse cose che necessità di miglioramenti funzinoali e questa qui presentata è una di quelle.