2010-08-10 6 views
0

J'ai créé une variable dans template.php qui permet d'imprimer les termes par vocabulaire. Le problème est que je veux être en mesure de transmettre un identifiant de vocabulaire pour sélectionner un vocabulaire spécifique. Mon code ressemble à ceci:Termes par vocabulaire dans node.tpl

function xnalaraart_classic_print_terms($node, $vocabularies){ 
    foreach($vocabularies as $vocabulary){ 
     if($terms = taxonomy_node_get_terms_by_vocabulary($node, $vocabulary->vid)){ 
      $output .= '<div>'; 
      $output .= '<ul class="links inline">'; 
      foreach ($terms as $term){ 
       $output .= '<li class="taxonomy_term_' . $term->tid . '">'; 
       $output .= l($term->name, taxonomy_term_path($term), array('rel' => 'tag', 'title' => strip_tags($term->description))); 
       $output .= '</li>'; 
      } 
      $output .= '</ul>'; 
      $output .= '</div>'; 
     } 
    } 
    return $output; 
} 

et dans la fonction preprocess_node:

$vars['terms_split'] = xnalaraart_classic_print_terms($vars['node']); 

Comment puis-je l'écrire afin que je puisse passer un identifiant à vocabulaires $?

Répondre

1

Je pense que vous avez rendu cela plus difficile sur vous-même que c'est vraiment. Voir ci-dessous pour la fonction finale.

function xnalaraart_classic_print_vocab_terms($node, $vid){ 
     if($terms = taxonomy_node_get_terms_by_vocabulary($node, $vid)){ 
      $output .= '<div>'; 
      $output .= '<ul class="links inline">'; 
      foreach ($terms as $term){ 
       $output .= '<li class="taxonomy_term_' . $term->tid . '">'; 
       $output .= l($term->name, taxonomy_term_path($term), array('rel' => 'tag', 'title' => strip_tags($term->description))); 
       $output .= '</li>'; 
      } 
      $output .= '</ul>'; 
      $output .= '</div>'; 
     } 
    return $output; 
} 

Et puis appelez

$vars['terms_split'] = xnalaraart_classic_print_terms($vars['node'], 10); //Where 10 is the vocab ID 
+0

Je veux être en mesure d'utiliser différents ids de vocabulaire en fonction de nœud type.tpl. C'est pourquoi je veux être capable d'envoyer un argument avec $ terms_split. – Toxid

+0

Donc, dans preprocess_node, utilisez une instruction switch. switch ($ vars ['node'] -> type) {case 'page': $ vars ['terms_split'] = .... ($ vars ['node'], 20); ... C'est logique? –

+0

Oui, c'est probablement la meilleure solution. Est-il impossible d'envoyer des arguments avec une variable de noeud? Comme $ terms_split ($ vid)? – Toxid