Дублирование категории в Breadcrumbs

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

Аватар пользователя Kalian Kalian 29 августа 2007 в 15:57

Структура сайта выглядит примерно так:

  • Главная категория
    • Подкатегория 1
    • Подкатегория 2

Чтобы нормально в нодах отображались breadcrumbs поставил себе модуль Taxonomy Breadcrumb. Все бы хорошо, но в Главной категории и подкатегориях почему-то название категории выводиться 2 раза.

Т.е. breadcrumbs выглядят так:

В главной категории: Имя главной категории > Имя главной категории
В подкатегории: Ссылка на главную категорию > Имя подкатегории > Имя подкатегории
В нодах: Ссылка на главную категорию > Ссылка на подкатегорию > Имя нода

Как можно избавить от дублирования названия категорий?

Комментарии

Аватар пользователя edhel edhel 29 августа 2007 в 19:43

Я использую свой модуль: http://drupal.org/project/node_breadcrumb для настройки breadcrumb. Но там автоматически breadcrumb не строится, а задаются правила: какие ноды к каким пунктам меню должны относиться. Соответственно breadcrumb-ы получаются типа:

главный раздел меню => подраздел меню => подподраздел

Соответственно, кроме breadcrumb и положение в меню отображается у ноды корректно (т.е. меню развернуто в нужном месте).

Аватар пользователя Kalian Kalian 30 августа 2007 в 11:31

Спасибо большое, действительно вещь интересная.
Но есть одно но... У меня названия разделов и пунктов в меню немного различаются (если название раздела слишком длинное, то в меню я его обзываю немного по другому одним-двумя словами). А в breadcrumb-е выводиться как раз название из меню.
Можно ли выводить название раздела?

Да и еще один минус - как я понял правила нельзя реактировать.

Аватар пользователя edhel edhel 30 августа 2007 в 12:16

Можно ли выводить название раздела?

Нельзя) И вообще это нелогично. В breadcrumb-е должны быть те же названия, по которым юзер кликал в меню имхо. И вообще не факт, что пункты меню совпадают с иерархией терминов. Например, статьи с термином "животные=>собаки" могут быть в разделе "статьи=>флора и фауна=>домашние животные".

Да и еще один минус - как я понял правила нельзя реактировать.

Лень делать) Да и лишний код - лишние тормоза.

Аватар пользователя Kalian Kalian 30 августа 2007 в 13:00

Мой пример.
Название категории: Выбор правовой формы собственности
В меню в виду длины названия категории: Формы собственности.

Теперь такой момент, когда находишься в самой категории в breadcrumb-е выводиться название категории, т.е. "Выбор правовой формы собственности".
А когда переходишь в нод, то в breadcrumb-е пишется "Формы собственности > Название нода"
Как раз нелогично получается здесь. В категории название одно, а в ноде другое.

Аватар пользователя Kalian Kalian 30 августа 2007 в 14:52

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

Аватар пользователя edhel edhel 30 августа 2007 в 15:48

Не выйдет это... Модулем я просто правлю текущую позицию в меню. А breadcrumb уже сам друпал генерит на основе текущей позиции в меню... и заголовки берутся из меню.

Если сильно захотеть, то можно подменить заголовки в теме, написав функцию phptemplate_menu_item_link. Стандартная реализация темизации ссылки в меню:

<?php
function theme_menu_item_link($item, $link_item) {
return l($item['title'], $link_item['path'], !empty($item['description']) ? array('title' => $item['description']) : array(), isset($item['query']) ? $item['query'] : NULL);
}
?>

Нужно пофиксить так: если path равен /taxonomy/term/TID, то загружаем термин с помощью taxonomy_get_term и берем оттуда нужное название. Дальше также вызываем l() или theme_menu_item_link.

Аватар пользователя edhel edhel 30 августа 2007 в 16:36

Ядро трогать не надо, модуль трогать не надо. Править template.php в теме... Добавить функцию phptemplate_menu_item_link взял за основу код theme_menu_item_link...

Аватар пользователя Kalian Kalian 30 августа 2007 в 17:06

При проверке $link_item['path']==/taxonomy/term/$tid пытаюсь заменить $item['title'] = taxonomy_get_term($tid) , но понимаю, что наверно делаю совсем не то.
Может поможешь мне с написанием этой функции.

Аватар пользователя Kalian Kalian 31 августа 2007 в 10:21

Спасибо, с этим я разобрался.
Возник другой вопрос - ни в одном модуле я не видел, чтобы при добавлении комментария breadcrumb был такой же как и в ноде, во всех модулях в breadcrumb-e остается только ссылка на ноду.
А можно ли сделать так, чтобы breadcrumb был такой же как в ноде, а название ноды осталось ссылкой?