[РЕШЕНО] Вывод словаря Таксономии Иерархией на новой странице

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

Аватар пользователя tlito tlito 9 августа 2014 в 16:43

Здравствуйте! D7.28
Мне нужно сделать новую страницу, на которой вывести иерархический список терминов словаря (2 уровня).
Я это пытался делать по теме: http://profhelp.com.ua/articles/drupal-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1...
Но мне пишет при создании Вьюса ошибка модуля Views_tree слишком много памяти, недоступно. Это просто не рабочий модуль.

А также я пытался сделать свой первый модуль, используя код из темы: http://www.drupal.ru/node/91119
И вот такой код просто не работал - писал что нет такой функции taxonomy_get_tree($voc, 0, 1).

Код модуля прикреплен.

Подскажите как сделать оптимально? Может с помощью вьюс можно?

ВложениеРазмер
Иконка простого текстового файла catalog_tree.module.txt1.13 КБ

Комментарии

Аватар пользователя artemrrr artemrrr 9 августа 2014 в 18:28

Здравствуй! D7.28

Включи из ядра модуль PHP filter, потом зайди на страницу на страницу конфигурации и настрой его там галку надо поставить, затем создаешь блок выбираешь ввод в формате PHP и вставляешь

<?php
function mymodule_taxonomy_tree($vid) {
$terms = db_query("
SELECT td.tid, td.name, th.parent, (
SELECT COUNT(*) FROM {taxonomy_index} ti
LEFT JOIN {node} n ON ti.nid = n.nid
WHERE ti.tid = td.tid AND n.status = 1
) node_count FROM {taxonomy_term_data} td
INNER JOIN {taxonomy_term_hierarchy} th ON th.tid = td.tid
WHERE vid = :vid
ORDER BY weight
", array(':vid' => $vid))->fetchAll();

return theme('item_list', array('items' => _mymodule_taxonomy_tree($terms)));
}
/**
* Helper for mymodule_taxonomy_tree()
*/
function _mymodule_taxonomy_tree($terms, $parent = 0, &$node_count = 0) {
$items = array();
$node_count = 0;

foreach ($terms as $term) {
if ($term->parent == $parent) {
$children = _mymodule_taxonomy_tree($terms, $term->tid, $childs_node_count);
$node_count += $term->node_count + $childs_node_count;
$items[] = array(
'data' => l($term->name, 'catalog/' . $term->tid) . ' (' . ($term->node_count + $childs_node_count) . ')',
'children' => $children,
);
}
}

return $items;
}
echo mymodule_taxonomy_tree(1);
?>

Жмешь сохранить, и Усё

Аватар пользователя tlito tlito 9 августа 2014 в 22:43

Fatal error: Cannot redeclare mymodule_taxonomy_tree() (previously declared in modules/php/php.module(80) : eval()'d code:2) in modules/php/php.module(80) : eval()'d code on line 15

Аватар пользователя tlito tlito 13 августа 2014 в 20:24

Вопрос задан непонятно.
вот тут обсуждалось и мне помогло: http://www.drupal.ru/node/26662
но я не могу понять как сделать перед множеством подпунктов родительский пункт?

как там ставилась задача http://www.drupal.ru/node/26662
у меня получается

Автомототехника СТО
Автомототехника автосалоны
Автомототехника диски

а должно:
Автомототехника
Автомототехника СТО
Автомототехника автосалоны
Автомототехника диски

убрать слово Автомототехника я могу от подпунктов, а вот добавить его вверх над ними не могу, так как работает Relashionship Родительский термин, обязательно. Если убрать обязательно, то вначале выводится список род. терминов а потом группированные дочерние.

Аватар пользователя tlito tlito 13 августа 2014 в 20:33

получилось. у меня стиль вывода был: сетка. а надо HTML list и там в настрйках Grouping field Родительский термин.
И еще уточню: поля, а не токены и не содержимое отображаются.