Построение дерева терминов и отображение привязанного к ним материала

Прислано: Dan

чт, 08/02/2007 - 21:33

Другие статьи по теме:

Здесь: модуль pdf view описывается задача.
Далее приводится решение.

<?php

// на всякий случай :)
if( !module_exist("taxonomy")){
  print(
'Включите модуль taxonomy!');
  return;
}

// путь должен быть /node/123
if( arg(0)!= 'node' || !arg(1) || !is_numeric(arg(1)))
  return;
else
  
$nid arg(1);

print(

"<pre>Begin ($nid)\n");
// получаем список всех терминов, привязанных к данному материалу
// если нужно сделать это в пределах одного словаря, пользуемся 
// функцией taxonomy_node_get_terms_by_vocabulary($nid,$vid)
$node_terms taxonomy_node_get_terms($nid);

// для каждого термина строим дерево родителей
// внимание! в данном примере, дабы не лезть в
// многомерность, считаем, что у каждого термина
// есть только один родитель
// если есть желающие познать многмерность, пусть
// не забудут они и про бесконечную рекурсию
$tree_array = array();
foreach(
$node_terms as $term)
{
  
$tree = array();
  do{
    
$tree[] = $term;
  }while( 
$term array_shift(taxonomy_get_parents($term->tid)));
 
  
$tree_array[] = $tree;
}

// теперь проводим обратную процедуру: обрабатываем 
// каждое дерево, и для каджого его термина выводим список
// материалов, привязанных к этому термину

// используем метод array_pop для "вытаскивания" терминов 
// в обратном порядке от того, в каком помещали

while( $tree array_pop($tree_array) )
  while( 
$term array_pop($tree) )
  {
    print(
"Раздел: ".$term->name."\n");
    
$result taxonomy_select_nodes(array(0=>$term->tid), 'or');
    while (
$node db_fetch_object($result))
      print(
"  Заголовок материала: \"".$node->title."\"\n");
  }

print(

"End</pre>\n");
?>

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано seaji в пт, 09/02/2007 - 00:04.

Круто.


Опубликовано Dan в пт, 09/02/2007 - 08:16.

PS: Я не добавил обработку PDF, но думаю это уже проще - в библиотеке есть примеры, да и модуль можно посмотреть.

2seaji: я скоро по taxonomy спецом стану :)


Опубликовано vadbars@drupal.org в пт, 09/02/2007 - 12:32.

> я скоро по taxonomy спецом стану :)
Ждем, таких давно не хватает. :)


Я ставлю строчку "php_value error_reporting 7" в файл .htaccess, а вы? :) Полный русский перевод Drupal 5.x и еще некоторых модулей.


Опубликовано Toologic в пн, 12/02/2007 - 16:45.

Как спецу по таксономии - посмотри, плз, код taxonomy_xml - много там под D5 переписывать!?

А то написал автору - тишина. а мне край- стоит задача категории с 4.7 перенести. Список стран (больше 200 элементов) с описаниями.

Ручками такое перебивать - повеситься!

Мой сайт на drupal - www.travelweekly.ru


Опубликовано Dan в пн, 12/02/2007 - 19:50.

На первый взгляд вроде маленький модуль. Может и не будет проблем. Попробуй сам сначала.
Создай файл taxonomy_xml.info в каталоге модуля и включи его.
Если будут вылязить ошибки (или просто работать не будет) сверся с версионными изменениями Drupal'a (на сайте drupal5.ru есть список по русски)
Удачи!


Опубликовано oblivion в вт, 20/02/2007 - 15:29.

объясните в какой файл это надо писать???


Опубликовано Dan в вт, 20/02/2007 - 16:45.

Ты же сам говорил: "если пойму как генерить список файлов думаю с сортировкой проблем не должно".
Я так понял, что разверёшься :)
Править надо модуль pdfview. Смотри как там генериться страница для печать и вставь в это место мой кусок кода.


Опубликовано oblivion в ср, 07/03/2007 - 12:41.

привет еще раз, помоги разобратся с пдф, ты писал тут что тут все просто, может быть но я что то никак не могу догнать, где именно нужно вписать твой код?(что в файле pdfview.module это я уже понял), когда я пробовал вписывать сам то друпал почемуто ни как не мог одуплить ф-ю taxonomy_node_get_terms($nid), что это может быть помоги.