Неоднократно упоминалось о проблеме с множественным наследованием в каталоге. Многие советуют смотреть в сторону Category. Но Category имеет как преимущества, так и недостатки. Судя по комментариям – недостатков больше, да и материалов по Category не очень много.
Данное решение проблемы позволит отказаться от Category, так как практически заменяет его. Проблема с множественным наследованием решается использованием модуля Hierarchical Select с таксономией. Дело в том, что когда мы создаем материал (ноду), к которому подвязан select (пусть даже множественный) с иерархией терминов, не очень удобно выбирать родителей, а тем более, когда список очень большой. Очень сомневаюсь, что у кого-то бы хватило терпения наполнять каталог таким образом.
Настройка словаря для выбора терминов через Hierarchical Select решает данную проблему. Дело в том, что когда мы привязываем ноду, например, к четвертому уровню словаря, через Hierarchical Select мы последовательно выбираем термины, а они, в свою очередь, автоматически становятся родителями для данной ноды. Например, нода “Audi S5” будет принадлежать всем терминам, указанным в цепочке навигации: Автомобили – Легковые – Audi – S5. Естественно, чтобы все корректно работало, необходимо включение дополнительных модулей: Menu Breadcrumb, Taxonomy Breadcrumb и Taxonomy Menu. Для полноценной навигации по каталогу не хватает блока с дочерними терминами текущего термина (эквивалент wrapper’а в модуле Category). Т.е., например, находимся в разделе (текущем термине) “Audi”, то этот блок должен показывать модели (дочерние термины) данного бренда: A4, A5, A6, A8, S4, S5 и т.д. Данный блок улучшает юзабилити каталога. Запрос “SELECT th.tid FROM term_hierarchy AS th WHERE th.parent = ‘$current_term’” выводит ID дочерних терминов текущего термина, но как получить ID текущего термина – пока не нашел.
Подскажите, пожалуйста, как можно решить данную проблему?
Заранее благодарен
Комментарии
А views вы не хотите воспользоваться?? Можно сделать блок при помощи него и там отображать все что вашей душе угодно, будь то дочерние термины или еще что-то.
А если не views то вот тут посмотрите [ru-api=taxonomy_get_children], а текущий термин получается из пути при помощи функции [ru-api=arg]
Вы только что такой пакаван модулей перечислили что по моему модуль категори можно было вдоль и поперек исползать.
Я не говорю что он средство от всех болезней, но в плане организации многоуровневых каталогов оченама хорошо работает, а HSelect можно и туда прикрутить.
Спасибо за советы. Проблему решил созданием views для термина, назначил аргумент для Таксономия: Родительский термин: Provide default argument → PHP Code:
<?php
$arg=arg(2);
return $arg;
?>
добавил поле Таксономия: Term и через фильтр привязал к словарю
вот об этом я и говорил