Предисловие
То, что меня раньше всегда раздражало при построении хлебных крошек — это то, что модули есть только для отдельных частей сайта. Есть для материалов — Custom Breadcrumbs (хотя вроде во второй версии там сделан ряд доработок, но всё равно сомнительно), для панелей — Panel Breadcrumbs (кстати, работают не всегда корректно), Hansel — вообще сложно сказать для чего. Для хлебных крошек на статичных страницах модуля вообще не было до появления первой версии моего Path Breadcrumbs. И вот такой набор модулей кое-как справлялся с созданием навигационной линейки для сайта. Однако даже это работало для большинства страниц, но не для всех. Я уже молчу о разнице в интерфейсе и возможностях модулей (не всегда даже есть возможность сделать крошку текстом, а не ссылкой). В общем, мне это порядком надоело и я решил написать модуль, который будет справляться с любыми хлебными крошками для любых страниц. И надо сказать — это у меня получилось.
Описание
Я рад представить вам своё новое творение — Path Breadcrumbs 2. Это модуль, который умеет строить хлебные крошки для абсолютно любых страниц (как статичных, так и динамичных). Удобный интерфейс (частично слизан с page manager’a) позволяет быстро и красиво строить навигационную линейку по крошкам. В результате кропотливого труда создан модуль, который позволяет заменить все остальные для построения хлебных крошек.
Почему надо использовать именно этот модуль:
1. Можно добавлять статическую страницу и задать хлебные крошки только для неё.
2. Можно добавить динамическую страницу (например, node/%node). В этом случае в навигационных ссылках можно будет использовать токены для замены.
3. Модуль не привязан ни к нодам, ни к вьюсам, ни к панелям и т. д. (в отличие от других модулей для хлебных крошек). Всё, что ему необходимо — это URL, на котором будет выведены навигационная линейка.
4. Имеются правила показа хлебных крошек. Это значит, что для одной и той же страницы могут показываться разные хлебные крошки! Например, можно показать одну навигацинную линейку для анонимов, а другую — для остальных пользователей. Если же взять пример для материалов — то можно показывать хлебные крошки в зависимости от типа материала, его статуса, значений полей и многого другого. Ниже приведён скриншот, на котором частично указаны возможные правила показа:
5. Есть возможность отключить хлебные крошки для любой страницы и включить их позже.
6. Поддержка мультиязычности: все заголовки хлебных крошек можно перевести.
7. Возможность указать хлебную крошку без ссылки (то есть просто текстовую).
8. Как уже упоминалось — удобный интерфейс.
9. Теперь все хлебные крошки хранятся в одном месте и действительно работают.
Установка модуля
Модуль зависит от Chaos Tools. Поэтому для установки моего модуля придётся поставить сначала этот. Далее всё как обычно — скачали модуль, разархивировали в /sites/all/modules, перешли на страницу /admin/modules и включили. Включать, кстати, надо два модуля: Path Breadcrumbs (ядро) и Path Breadcrumbs UI (интерфейс пользователя).
Настройка модуля
Тем, кто уже работал с модулем Page Manager интерфейс будет знакомым. Остальным же придётся совсем немного разобраться.
Для создания хлебной крошки перейдите на страницу /admin/structure/path_breadcrumbs и нажмите на Create path breadcrumbs:
Перед вами развернётся первый шаг создания хлебных крошек:
Здесь Path name — это любое название для навигационной линейки, которое будет отображаться в списке всех хлебных крошек. Path — путь, на котором будут выводиться хлебные крошки. На скриншоте я решил создать навигационную линейку для материалов.
Следующий шаг предложит вам выбрать для введённых заменяемых частей урла (например, %node) связь к сущностям сайта. Для этого напротив аргумента нажмите кнопку Change:
Вам откроется такое окно с выбором сущностей:
Выбираете нужную сущность (в нашем случае — Node: ID). Нажимаем далее. Может появиться окно с настройками сущности — просто выберите то, что необходимо для вашей ситуации (в большинстве случаев можно сразу нажать кнопку «Finish»).
Теперь сущность привязана к аргументу:
Следущий шаг — это выбор условий, при которых будет показана навигационная линейка. Для примера можно показать её только для материалов типа Article. В выпадающем списке выбираем тип материала и нажимаем кнопку ADD:
После добавления появится попап с выбором доступных типов материалов:
Отмечаем нужный тип материала и жмём Save. В форме видно, что мы добавили условие:
Условий, можно добавлять неограниченное количество. Чуть ниже расположена форма выбора логики проверки условий: все добавленные условия должны выполняться, или же хотя бы одно.
Последний шаг — составление хлебных крошек:
Translatable — флаг, обозначающий, будут ли заголовки хлебных крошек доступны для перевода.
Prepend Home link to the Breadcrumbs — флаг, отвечающий за добавление ссылки «Главная» в начале навигационной линейки.
Далее идёт таблица с хлебными крошками. Думаю, тут всё интуитивно понятно и не требует объяснений.
Нажимаем на кнопку сохранения.
Substitutions — Список токенов для автозамены.
Результат работы
А вот и результат создания навигационной линейки:
Дополнительно
Модуль позволяет делать неограниченное количество навигационных линеек для любых путей (даже для одинаковых). Поэтому при переборе подходящих вариантов для страницы предпочтение будет отдано варианту с наименьшим весом (чем выше вариант в списке — тем меньше вес):
Страница с модулем Path breadcrumbs. Пользуйтесь на здоровье!
UPDATE (09.06.2012)
Модуль научился делать ещё кое-что:
- Появилась возможность импорта / экспорта.
- Появилась возможность клонировать навигационную линейку.
- Добавлена возможность скрыть хлебные крошки, если она содержит всего 1 элемент.
- Добавлена поддержка микроформатов RDFa для хлебных крошек.
- Теперь вы сами можете указать символ, который будет разделителем для хлебных крошек
- Добавлен токен, который выводит заголовок текущей страницы.
- Добавлены токены, который позвляют использовать значение аргументов из урла.
- К крошкам добавлены классы 'odd', 'even', 'first', 'last' в зависимости от их позиции в линейке.
- Поправлены стили для формы добавление крошек.
UPDATE (13.06.2012)
Один из наиболее частых вопросов — как сделать хлебные крошки для поля таксономии. На скриншоте пример для поля field_category (таксономия с иерархией):
А вот результат таких настроек: