Собрал модуль. Отдаленно похож на taxonomy_menu, но из двух словарей

Сб, 05/11/2016 - 16:25

наедаюсь не велосипед.

перед установкой обязательно сделать копию базы


Уже не первый раз делаю подобное, сейчас решил оформить в модуль. может кому пригодиться
.
Многим знакома ситуация, когда в меню брендов необходимо вывести категории производимых товаров.
бреднд
-категория
--подкатегоряи

image

принцип такой.
1. берятся один словарь, и в цикле ищутся материалы с термином.
2. Из найденных материалов выбираются все термины из второго словаря и добавляются как потомки к первому.
3. Все это записывается в меню.

Меню может получится чересчур большим.
есть небольшие косяки, но в основном работает.

зы: у меня каталог на 20к обновляет за 5 секунд.

4 Спасибо

Комментарии

Аватар пользователя gun_dose
3 months 3 недели назад gun_dose #

Оо, это типа есть словарь каталог и словарь брэнды, создаём телефон самсунг и он к брэндам пристаканивает к самсунгу дочерний термин телефон? Или я не так понял?

0 Спасибо
Аватар пользователя bumble
3 months 3 недели назад bumble #

На главной.

0 Спасибо
Аватар пользователя voviko
3 months 3 недели назад voviko #

да.. типа меню Самсунг -> Планшет -> Такойто.
К меня из 190 терминов, в меню под 2000 ссылок получилось, так что тут тоже, палка о двух концах.

0 Спасибо
Аватар пользователя gun_dose
3 months 3 недели назад gun_dose #

Но при этом меню также полностью продублировано деревом таксономии?

0 Спасибо
Аватар пользователя voviko
3 months 3 недели назад voviko #

Всё просто.
1 уровень - это производители
2 уровень, ветви второго словаря (выборка терминов материалов, у которых есть термин из первого словаря)
3 уровень, тот же что и второй, только немного глубже.
Видео сделал. youtybe

0 Спасибо
Аватар пользователя voviko
3 months 3 недели назад voviko #

перезалил модуль

0 Спасибо
Аватар пользователя Frantsuzzz
3 months 2 недели назад Frantsuzzz #
voviko написал:
перед установкой обязательно сделать копию базы

Это настораживает. Код не смотрел, Сразу признаетесь, что там спрятано?

0 Спасибо
Аватар пользователя Frantsuzzz
3 months 2 недели назад Frantsuzzz #

Эх, заставили в код залесть. Ну, во первых, ничего стремного для БД я не нашел. И это уже радует. А во вторых, в чем прелесть данного подхода? В итоге ссылки ведут на страницу термина. Поясню, тем кто не в курсе. Я получаю меню такого вида:
Атлант
-Холодильник
-Морозильник
Indesit
-Холодильник
-Стиральная машина
Когда я перейду по ссылке "Холодильник" в любом уровне, я получу один и тот-же результат. Там будут все холодильники, что есть в системе. Смысл в таком меню? Продвижение или удобство? Попробуйте продвинуть Холодильник Indesit с такой структурой...

0 Спасибо
Аватар пользователя gun_dose
3 months 2 недели назад gun_dose #

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

0 Спасибо
Аватар пользователя Frantsuzzz
3 months 2 недели назад Frantsuzzz #
gun_dose написал:
а в ссылках разделов нет статичной части

Объясни подробнее. А сам модуль ты можешь быстро глянуть. он не большой

0 Спасибо
Аватар пользователя gun_dose
3 months 2 недели назад gun_dose #

Если ссылки имеют вид: catalog/samsung/phones, catalog/samsung/tv, catalog/horizont/tv, то можно не париться, а создать вьюс и распрасить алиасы в контекстном фильтре. И ссылка у вьюса будет catalog/%1/%2, если использовать панели, то ссылка будет аналогичная.

Если же по каким-то причинам ссылки категорий должны иметь вид: samsung/phones, samsung/tv, horizont/tv, то мы тут уже из двух словарей ни вьюсами, ни панелями ничего не слепим, т.к. нельзя им задавать урл, в котором одни только аргументы.

0 Спасибо
Аватар пользователя voviko
3 months 2 недели назад voviko #

залил новую версию. taxonomy_menu_two_in_one_v2.rar
отличие в том, что ссылки с GET /term_patch?tid_первый словарь =123&tid=123
удобно в views аргументы передавать

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


      <?php
      $path 
'taxonomy/term/'.$term->tid;
      
$parent menu_link_get_preferred($path);
      
$parameters = array(
        
'active_trail' => array($parent['plid']),
        
'only_active_trail' => FALSE,
        
'min_depth' => $parent['depth']+1,
        
'max_depth' => $parent['depth']+1,
        
'conditions' => array('plid' => $parent['mlid']),
      );
      
$menu menu_build_tree($parent['menu_name'], $parameters);
      print @
drupal_render(menu_tree_output($menu));
      
?>
0 Спасибо
Аватар пользователя voviko
3 months 2 недели назад voviko #
Frantsuzzz написал:
voviko написал:

перед установкой обязательно сделать копию базы

Это настораживает. Код не смотрел, Сразу признаетесь, что там спрятано?

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

0 Спасибо