Создание меню из словарей

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

Аватар пользователя tonnal tonnal 17 декабря 2009 в 15:25

При разработке сайта для риэлторов с каталогом недвижимости, каждый объект недвижимости помечается терминами из трех словарей:
1. Назначание объекта (продажа, аренда, спрос)
2. Тип объекта (вторичка, новостройки, коттеджи...)
3. Местоположение (словарь с иерархией по регионам, городам и районам)

На выходе нужно получить меню следующего вида:
Недвижимость
- Продажа
- - Вторичка
- - - Самара
- - - - Железнодорожный р-н
- - - - Кировский р-н
- - - Россия
- - Новостройки
- - - Самара
- - - - Железнодорожный р-н
- Аренда
- - Вторичка
- - - Самара
- - - - Железнодорожный р-н
- - - - Кировский р-н
- - - Россия

Т.е. к каждому из терминов из первого словаря крепим все термины второго словаря, каждому термину второго словаря крепим все термины из третьего словаря и т.д. При этом нужно выводить только те пункты меню в которых не пусто.

Пока все решил своим модулем, который при выходе пользователя (администратора сайта) вручную строит массив меню и делает перестройку таблицы меню. Решилась задача конечно быстро, но что-то не очень красиво))

Вот думаю может есть какие-то стандартные решения (модули) которые я просто упустил из виду?

p.s. Пока писал это, возникла мысль что может есть смысл генерить еще один словарь в котором разворачивать все дерево меню и при сохранении добавлять к ноде термин из этого обобщенного словаря а строить меню через menu_taxonomy?

Комментарии

Аватар пользователя tonnal tonnal 17 декабря 2009 в 15:49

"RxB" wrote:
Воспользуйтесь чудесным свойством таксономии tid1+tid2 и генерируйте блок

Блок это конечно выход, но он потянет за собой кучу проблем проблем: ручное добавление хлебных крошек; отслеживание какой пункт меню активен и раскрывать руками дерево; решать проблемы с кэшем, генерить это дерево... а еще стоит menu_block который режет меню на три уровня и выводит в разных блоках. Поэтому задачу нужно решать именно с помощью системы меню что бы не создавать себе дополнительных проблем, как с версткой так и с логикой интерфейса.

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