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

Главные вкладки

Аватар пользователя Dan Dan 9 февраля 2007 в 0:33

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

<?php

// на всякий случай Smile
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("

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

\n");
?>

Комментарии

Аватар пользователя Dan Dan 9 февраля 2007 в 11:16

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

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

Аватар пользователя Toologic Toologic 12 февраля 2007 в 19:45

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

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

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

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

Аватар пользователя Dan Dan 12 февраля 2007 в 22:50

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

Аватар пользователя Dan Dan 20 февраля 2007 в 19:45

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

Аватар пользователя oblivion oblivion 7 марта 2007 в 15:41

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