Иерархическое меню из значений cck поля с подсчётом нод

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

Аватар пользователя forest_run forest_run 15 декабря 2011 в 18:00

Есть два CCK поля со списком выбора.

Поле field_category (категория) со значениями:
shtuka1|Штукенция 1
shtuka2|Штукенция 2
shtuka3|Штукенция 3

и поле field_material(материал) со значениями:
plast|Пластик
metal|Металл
stone|Камень

НАДО: Сделать из этого менюшку со следующей иерархией и с подсчётом количества нод рядом в скобках (на подобии блока которые создаёт модуль taxonomy_menu):

Штукенция 1 (количество всех штукенций1)
- Пластик (количество пластиковых штукенций1)
- Металл (количество металических штукенций1)
- Камень (количество каменных штукенций1)
Штукенция 2 (количество пластиковых штукенций21)
- Пластик (...)
- Металл (...)
- Камень (...)
Штукенция 3 (...)
- Пластик (...)
- Металл (...)
- Камень (...)

Пока смог реализовать это вставкой следующего кода в блок, но это как-то не по-друпальски, да и явно должно быть менее грамоздкое решение.

<?php
$query = "SELECT count(nid) as c_nid FROM content_type_desc_product WHERE field_category_value='shtuka1' ";
  $result = db_query($query, '1');
  $entry = db_fetch_object($result);
  print '<ul><li><a title="" href="/shop/shtuka1">Текст ссылки ('. $entry->c_nid .')</a></li>';
?>

<?php
$query = "SELECT count(nid) as c_nid FROM content_type_desc_product WHERE field_category_value='shtuka1' and field_material_value='plast' ";
  $result = db_query($query, '1');
  $entry = db_fetch_object($result);
  print '<ul><li><a title="" href="/shop/shtuka1/plast">Текст ссылки ('. $entry->c_nid .')</a></li></ul></ul>';
?>

Комментарии

Аватар пользователя Shok211 Shok211 15 декабря 2011 в 18:31

Все настройки для хранятся где то в базе drupal + для вывода результата использовать Drupal если работает с семеркой зайдите в drupal.org найдите field.module дальше функцию с выводом настройки поля. И гляньте пару скринкастов по views (Конечно если вы с ним ещё не работали)

Аватар пользователя Shok211 Shok211 15 декабря 2011 в 21:28

Я бы на вашем месте использовал таксономию.
a) Для работы с ней есть куча модулей
б) Простое добавление удаление тегов
в) простая архитектура данных
Как то был опыт с реализацией чего подобного (честно скажу не очень удачный) всё получилось однако последующая поддержка сайта крепко измотала мои нервы.

Аватар пользователя forest_run forest_run 15 декабря 2011 в 22:19

Спасибо! Но от таксономии было решено отказаться из-за других более важных задач в стиле: "стандартными методами никак - пиши свою таксономию, с блекджеком и ..."

Метод который я написал в теле топика вполне рабочий, просто хотелось узнать можно ли как-то это дело упростить - пунктов меню будет ~50, т.е. это +50 запросов к БД (можно конечно кешировать), но всё равно редактировать такое меню - не очень весёлое занятие..

Аватар пользователя Shok211 Shok211 15 декабря 2011 в 22:21

Я же вам сказал загружайте настройки поля из базы данных делайте меню с ссылками на views. И уже через views поиск, запрос, вывод

Аватар пользователя forest_run forest_run 15 декабря 2011 в 22:23

Shok211 wrote:
Я же вам сказал загружайте настройки поля из базы данных делайте меню с ссылками на views. И уже через views поиск, запрос, вывод

Хорошо, а как тогда добавить счётчики для каждого пункта меню?

Аватар пользователя forest_run forest_run 15 декабря 2011 в 22:21

Уточню - саму иерархию страниц сделать то получилось без особых проблем, views + cck мощная штука.
Но вот надо теперь ещё и менюшку под это дело сделать.

Аватар пользователя Shok211 Shok211 15 декабря 2011 в 22:29

Уфф ну как я понял views api вы не смотрели и вручную его зафигачит у вас не получиться. Ещё и дрюпал 6 : (. Ну дерзайте с запросами (Только вместо обработки каждого пункта в отдельно получите все эти пункты и пройдите по ним циклом) и то попроще будет.