Lab / Drupal

Drupal показываем родителя в раскрытом фильтре по словарю таксономии

Сегодня как обычно нужно было реализовать ранее не отточенное на практике. В расскрытом фильтре городов и регионов, при поиске отображать регион в который вложен город.

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

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

function MYMODULE_form_views_exposed_form_alter(&$form, &$form_state, $form_id) {
 $parent = '';
 $options = $form['tid']['#options'];
 foreach ($options as $index => $option) {
 if (is_object($option)) {
 $label = reset($option->option);
 $key = key($option->option);
 if (substr($label, 0, 1) != '-') {
 $parent = $label;
 }
 else {
 $options[$index]->option[$key] = $options[$index]->option[$key] . " ($parent)";
 }
 }
 }
}