Вывод крошек на втором уровне терминов в каталоге (в подкатегории) получается в стиле (находимся в "Крышки цепи"): Главная / Двигатель / Крышки цепи / Двигатель
В Ноде все хорошо, красивый и правильный путь (хотя node_breadcrumb не включен).
Перелопатил весь сайт, нашел все drupal_set_breadcrumb, ни одно не помогает
Если изменяю в модуле menu_bradcrumb:
<?php $breadcrumb = drupal_get_breadcrumb();
if (
variable_get('menu_breadcrumb_append_node_title', 0) == 1) {
$node_title = filter_xss(menu_get_active_title(), array());
if (variable_get('menu_breadcrumb_append_node_url', 0) == 1) {
$breadcrumb[] = $is_front ? l(t('Home'), '<front>') : l($node_title, $_GET['q'], array('html' => TRUE,));
}
else {
$breadcrumb[] = $is_front ? t('Home') : $node_title;
}
}
if (
count($breadcrumb) == 1 && variable_get('menu_breadcrumb_hide_on_single_item', 0)) {
$breadcrumb = array();
}
$breadcrumb[]=1; //вот эту строчку добавляю
drupal_set_breadcrumb($breadcrumb);
}?>
То в итоге получаю путь: Главная / Двигатель / Крышки цепи / 1 / Двигатель
в итоге прихожу к мнению, что чоо-то после этого модуля ещё дописывает хлебные крошки.
Какие модули стандартные (или общеиспользуемые) могут переписывать их? Или где настроить чтоб модуль был последним в обработке хлебных крошек?
И ещё: если мы находимся в категории "Двигатели" (родительской категории), то хлебные крошки отображаются хорошо
Комментарии
Нельзя так делать. Пользуйтесь API.
$breadcrumb[]=1; //вот эту строчку добавляю - это всего лишь для определения где модуль заканчивает формирование бредкрампа (а сам код - из модуля menu_breadcrumb)
Не понимаю где он может дальше добавлять к хлебным крошкам вот этот самый "двигатель". Перерыл все что было связано с drupal_set_breadcrumb - поиском эклипса по строке. Но так и не понял где он его меняет дальше (в ядре когда обрабатывает drupal_get_breadcrumb разве что - вызывается каждый раз при set-е)
Включен для крошек menu_breadcrumb, он настроен на меню собранное с помошью taxonomy_menu. Многоуровневая иерархия. Вот на 1 уровне (родительском все замечательно) а на детках - плохо.
ппц, не пойму и все, где он ещё дописывает ему крошки..
Путем жестких извращений и правки файла template, по средством искусственного введения в модуле Меню бреадкрамп нового элмента "||", а затем перебора всей переменной breadcrumb вплоть до этого элемента и вывода собранного нового бредкрампа - достиг нужных успехов. Но это неправильный подход, извращенский... Задача считаю не решена.
В template теперь:
function mytheme_breadcrumb($variables) {
$sep = ' > ';
if (count($variables['breadcrumb']) > 0) {
$last = count($variables['breadcrumb'])-1;
for($i=0;$i<=$last;$i++){
if($variables['breadcrumb'][$i]!='||'){
$retvar[] = $variables['breadcrumb'][$i];
}
else {
break;
}
}
$last = count($retvar)-1;
$retvar[$last]="".$retvar[$last]."";
$retvar = implode($sep, $retvar);
return $retvar;
}
else {
return t("Главная");
}
}
а в модуле menu_breadcrumb добавлено:
$breadcrumb[]='||';
drupal_set_breadcrumb($breadcrumb);
В итоге все заработало - но до ужаса неправильно и искусственно.