2010-07-20 6 views
0

J'ai eu du mal à mettre le terme parent id du terme du noeud dans l'argument views. Laissez-moi vous expliquer pourquoi j'essaie de faire une chose si étrange. Eh bien, sur la page du terme, je montre un bloc avec la liste de tous les nœuds sous ce terme. Mais au moment où l'on clique sur un nœud, ce bloc disparaît comme argument par défaut (pour l'ID de terme) dans la vue: if (arg (0) == 'taxonomy' & & arg (2)! = '') { return arg (2); } C'est pour les arrangements de taxonomie comme équipe >> Pays >> Australie >> caractéristiques, articles etc. Ici: le vocabulaire est l'équipe: Le pays est le terme principal, l'Australie est le terme et la caractéristique, les articles etc. d'enfant sont des termes d'enfants C'est bon. Mais comme je veux aussi montrer le Bloc sur les pages de nœud de ce terme, je veux extraire le terme parent de ce nœud 'ID [parce que le nœud est un article sous Feature et le bloc de liste des nœuds que je montre est Under Australia terme.] afin que je puisse ajouter d'autres arguments comme: elseif (arg (0) == 'noeud') { puis ...... Aide Plz.Drupal 6- Parent terme id du terme d'un noeud

Répondre

2

Si je comprends bien la question, vous voulez afficher un bloc qui montre tous les nœuds avec le même terme de taxonomie que le parent immédiat du terme du nœud. Si le noeud a 2 termes a> b (c'est-à-dire a est le parent de b), alors le terme est a. Si vous avez> b> c et que tous ont été définis, alors vous avez a et b comme certains termes parents. Ensuite, le bloc devrait montrer tous les nœuds ayant a et b comme termes.

donc la poursuite serait:

else if (arg(0) == 'node' && is_numeric(arg(1)))) { 
    $n = node_load(arg(1)); 
    $vid = 0; // change for the required vocabulary 
    $tids = array(); // will hold all the parents of the node's terms 

    foreach ($n->taxonomy as $tid => $term) { 
    if ($term->vid == $vid) { 
     $parents = taxonomy_get_parents($term->tid); 

     // the term has a parent 
     if (count($parents)) { 
     $parent = array_shift($parents); 
     $tids[] = $parent->tid; 
     // if you require only one parent term, return the first one that we find 
     // comment the next line if you want all terms that act as parents 
     return $parent->tid; 
     } 
    } 
    } 
    // in this case, make sure that you 
    // check the 'Allow multiple terms per argument' checkbox 
    // and argument type is 'Term IDs separated by , or +' 
    return implode(',', array_unique($tids)); 
} 

D'une certaine manière, la solution ci-dessus fonctionne comme l'attribut profondeur et modificateur de profondeur pour l'argument terme.

Questions connexes