Drupal 6 - Родительский термин id термина узла - PullRequest
0 голосов
/ 20 июля 2010

Я изо всех сил пытался поместить родительский идентификатор id термина узла в аргумент представления.Позвольте мне объяснить, почему я пытаюсь сделать такую ​​странную вещь.Ну, на странице термина я показываю блок со списком всех узлов под этим термином.Но в тот момент, когда кто-то щелкает по любому узлу, этот блок исчезает в качестве аргумента по умолчанию (для идентификатора термина) в представлении: if (arg (0) == 'taxonomy' && arg (2)! = '') {Return arg(2);} Это относится к таксономическим соглашениям, таким как команда >> Страна >> Австралия >> особенности, статьи и т. Д. Здесь: словарь - это команда: страна - это основной термин, Австралия - термин и функция «Ребенок», статьи и т. Д. - это термины «ребенок-ребенок».,Но так как я хочу также показать блок на страницах узлов этого термина, я хочу получить родительский термин 'ID этого узла [ID], потому что узел (скажем) - это статья в разделе Feature, а блок списка узлов, который я показываю, - Under Australiaтермин.], чтобы я мог добавить еще один аргумент, например: elseif (arg (0) == 'node') {затем ...... Plz help.

1 Ответ

2 голосов
/ 23 февраля 2011

Если я правильно понимаю вопрос, вы хотите отобразить блок, в котором показаны все узлы с таким же термином таксономии, что и непосредственный родительский термин термина.В случае, если у узла есть 2 слагаемых a> b (то есть a является родителем b), тогда этот термин является a.Если у вас есть a> b> c и все они установлены, то у вас есть a и b в качестве некоторых терминов «родители».Тогда блок должен будет показать все узлы, которые имеют a и b как термины.

, поэтому продолжение будет:

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));
}

В некотором смысле, решение выше работает как атрибут глубиныи модификатор глубины для аргумента термина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...