[модуль] по созданию хлебных крошек для любых страниц в Drupal 7

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

Аватар пользователя SplasH SplasH 7 июня 2012 в 16:13

Вчера закончил работу над модулем, который позволяет создавать хлебные крошки очень гибким образом и для любых страниц. Фактически, он заменяет набор из ранее созданных модулей под Drupal 7, которые в своей связке кое-как позволяют строить навигационные линейки.

Почему надо использовать именно мой модуль:

1. Можно добавлять статическую страницу и задать хлебные крошки только для неё.

2. Можно добавить динамическую страницу (например, node/%node). В этом случае в навигационных ссылках можно будет использовать токены для замены.

3. Модуль не привязан ни к нодам, ни к вьюсам, ни к панелям и т.д. (в отличие от других модулей для хлебных крошек). Всё, что ему необходимо - это URL, на котором будет выведены навигационная линейка.

4. Имеются правила показа хлебных крошек. Это значит, что для одной и той же страницы могут показываться разные хлебные крошки! Например, можно показать одну навигацинную линейку для анонимов, а другую - для остальных пользователей. Если же взять пример для материалов - то можно показывать хлебные крошки в зависимости от типа материала, его статуса, значений полей и многого другого.

5. Есть возможность отключить хлебные крошки для любой страницы и включить их позже.

6. Поддержка мультиязычности: все заголовки хлебных крошек можно перевести.

7. Возможность указать хлебную крошку без ссылки (т.е. просто текстовую).

8. Удобный интерфейс.

9. Теперь все хлебные крошки хранятся в одном месте и действительно работают.

Почитать более подробно и со скриншотами можно у меня в блоге. Ссылка на сам модуль - Path breadcrumbs.

Комментарии

Аватар пользователя Shok211 Shok211 7 июня 2012 в 16:51

Последние 2 раза для хлебных крошек нужно было указать ссылку Node Reference в теле Node. И вместо имени этого материала вывести одно из его полей (Проблема со склонениями). Может модуль это сделать ?

Аватар пользователя SplasH SplasH 7 июня 2012 в 16:55

"Shok211" wrote:
Последние 2 раза для хлебных крошек нужно было указать ссылку Node Reference в теле Node. И вместо имени этого материала вывести одно из его полей (Проблема со склонениями). Может модуль это сделать ?

Не тестировал на референсах. Но если ctools это позволяет - то да, модуль это может Smile У меня используются токены, предоставляемые ctools'ом для сущностей.

Аватар пользователя Ch Ch 7 июня 2012 в 16:57

Контекст не могу назначить
Notice: Undefined index: argument в функции path_breadcrumbs_ui_argument_context_form() (строка 870 в файле home/www/sites/all/modules/path_breadcrumbs/path_breadcrumbs_ui/path_breadcrumbs_ui.module).

Аватар пользователя SplasH SplasH 7 июня 2012 в 17:07

"Ch" wrote:
Контекст не могу назначить

Если можно - все баги в ишью модуля с подробным описанием. Как минимум мне надо знать путь и какие контексты присваивались.

"igor701" wrote:
спасибо! давно такого не хватало
не думаете модуль Token задействовать?

Там есть аналог токенов от Ctools'a.

Аватар пользователя Ch Ch 10 ноября 2015 в 11:48

Quote:
Если можно - все баги в ишью модуля

С контекстом разобрался, дело не в модуле было. Хотя php ошибки все равно остались. Потом отпишусь.
Quote:
Как минимум мне надо знать путь и какие контексты присваивались.

Тут бы пригодился, какой нибудь интерфейс для экспорта крошек. Например, ctools expotable.

Токены какие то странные, это так и должно быть?

И ещё вопрос, как добавить несколько контекстов?

Аватар пользователя SplasH SplasH 7 июня 2012 в 18:11

"Ch" wrote:
С контекстом разобрался, дело не в модуле было. Хотя php ошибки все равно остались. Потом отпишусь.

Не ошибки, а уведомления Smile В beta4 я это поправил.

"Ch" wrote:
Тут бы пригодился, какой нибудь интерфейс для экспорта крошек. Например, ctools expotable.

Будет. На странице проекта экспорт и импорт висит в туду.

"Ch" wrote:
Токены какие то странные, это так и должно быть?

Да. Это placeholder'ы ctools'a.

"Ch" wrote:
И ещё вопрос, как добавить несколько контекстов?

Для одного элемента пути один контекст. Например, для node/%node можно привязать только один контекст к %node. Для some-page/%node/%node2 можно привязать уже 2 контекста.

Аватар пользователя Ch Ch 7 июня 2012 в 19:08

"SplasH" wrote:
Для одного элемента пути один контекст.

Например, если мне для ноды нужны такие крошки:
Главная » Блог им. [usеr:namе] » [node:title]
То никак?

Аватар пользователя drupby drupby 7 июня 2012 в 19:17

А почему бы не сделать как в page manager :
чтобы были системные страницы ,типа /node/%node ,/user/%user , /taxonomy/term/%taxonomy_term , которые будут выключены по умолчанию и при желании включены и добавлены нужные варианты в зависимости от выбранных рулесов ,
а все остальные добавлялись через local action "добавить кастомный Breadcrumb " ?
так было бы интуитивно более понятно и знакомо .

Аватар пользователя Ch Ch 7 июня 2012 в 19:41

Наверно, можно вообще сделать просто плагин к page manager (новый тип варианта), чтобы не изобретать собственный велосипед. Многие вопросы бы решились сами собой. В page_manager есть множественные контексты, экспорт, отношения и т.д.

Аватар пользователя SplasH SplasH 7 июня 2012 в 19:48

"Ch" wrote:
Например, если мне для ноды нужны такие крошки:
Главная » Блог им. [usеr:namе] » [node:title]
То никак?

Пока никак. Но это на данный момент в разработке - будут и отношения.

"drupby" wrote:
А почему бы не сделать как в page manager :
чтобы были системные страницы ,типа /node/%node ,/user/%user , /taxonomy/term/%taxonomy_term , которые будут выключены по умолчанию и при желании включены и добавлены нужные варианты в зависимости от выбранных рулесов ,
а все остальные добавлялись через local action "добавить кастомный Breadcrumb " ?
так было бы интуитивно более понятно и знакомо .

Не всё так просто, как хотелось бы. Я уже думал над таким решением - и если будет время, то я так и сделаю. Изобретение своего велосипеда занимает определённое время Smile

Аватар пользователя drupby drupby 7 июня 2012 в 19:56

"SplasH" wrote:
Не всё так просто, как хотелось бы.

это понятно , но всё равно в сравнении с тем же ханзелем -небо и земля , так что спасибо за хорошее начинание .

Аватар пользователя SplasH SplasH 7 июня 2012 в 20:24

"Ch" wrote:
Наверно, можно вообще сделать просто плагин к page manager (новый тип варианта), чтобы не изобретать собственный велосипед. Многие вопросы бы решились сами собой. В page_manager есть множественные контексты, экспорт, отношения и т.д.

Я тоже изначально думал об этом. Но потом вспомнил, что page manager заменяет контентную область. А мне надо лишь установить крошки. Там есть некоторое количество нюансов, которое не позволяет сделать предложенное решение универсальным.

Аватар пользователя unic@drupal.org unic@drupal.org 8 июня 2012 в 9:29

Plazik wrote:
Спасибо.
Но разве Hansel не позволяет для любого url делать любые хлебные крошки?

В то и дело, что позволяет Smile И для любого url, и для любого типа ноды.

Аватар пользователя S_F S_F 8 июня 2012 в 15:56

"Plazik" wrote:
Спасибо.
Но разве Hansel не позволяет для любого url делать любые хлебные крошки?

Мутный он какой то этот хансель.. Когда ковырялся были проблемы для сложной связки вюьха- нода - вьюха

Кастом бреккампс спас, там все через тоекны получилось сделать..

Аватар пользователя SplasH SplasH 8 июня 2012 в 18:20

"S_F" wrote:
Мутный он какой то этот хансель..

Вот у меня такое же мнение о ханселе. Особенно поковырявшись в коде он мне совсем разонравился.

Аватар пользователя SplasH SplasH 9 июня 2012 в 2:49

Немного доработал модуль. Вот список изменений:

  • Появилась возможность импорта / экспорта.
  • Появилась возможность клонировать навигационную линейку.
  • Добавлена возможность скрыть хлебные крошки, если она содержит всего 1 элемент.
  • Добавлена поддержка микроформатов RDFa для хлебных крошек.
  • Добавлен токен, который выводит заголовок текущей страницы.
  • Добавлены токены, который позвляют использовать значение аргументов из урла.
  • К крошкам добавлены классы 'odd', 'even', 'first', 'last' в зависимости от их позиции в линейке.
  • Поправлены стили для формы добавление крошек.
Аватар пользователя Plazik Plazik 9 июня 2012 в 16:08

"SplasH" wrote:
Добавлена поддержка микроформатов RDFa для хлебных крошек.

Гугл рекомендует использовать микроданные http://support.google.com/webmasters/bin/answer.py?hl=ru&answer=99170&to..., модуль будет их поддерживать? http://support.google.com/webmasters/bin/answer.py?hl=ru&hlrm=en&answer=...

Аватар пользователя SplasH SplasH 10 июня 2012 в 17:19

Как и обещал - начиная с 7.x-2.0-beta8 появилась возможность включать поддержку микроданных или RDFa на выбор.

Аватар пользователя SplasH SplasH 11 июня 2012 в 17:28

"Ch" wrote:
Главная » Блог им. [usеr:namе] » [node:title]

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

Блог им. %node:author | %node:author:url
%node:title | %node:url

и всё будет прекрасно работать.

Аватар пользователя Mintaj Mintaj 6 июля 2012 в 1:57

Спасибо большое за модуль)
Подскажите пожалуйста, как можно для одной и той же страницы выводить разные крошки, если попасть на нее можно из разных разделов. (Одна нода относится сразу к нескольким терминам.)

Аватар пользователя iNFerNo iNFerNo 9 июля 2012 в 9:51

Как добавить урл ноды связанной с другой нодой.

заголовок я вывел а как урл вытянуть ноды к которой привязана вторая нода на странице которой выводим хлебные крошки?

Аватар пользователя SplasH SplasH 14 августа 2012 в 16:12

"Mintaj" wrote:
Подскажите пожалуйста, как можно для одной и той же страницы выводить разные крошки, если попасть на нее можно из разных разделов. (Одна нода относится сразу к нескольким терминам.)

Поставьте правило выбора - Custom PHP code, и в нём посмотрите $_SERVER['HTTP_REFERER'] - т.е. откуда пришёл пользователь. В зависимости от этого и показывайте крошки.

"iNFerNo" wrote:
заголовок я вывел а как урл вытянуть ноды к которой привязана вторая нода на странице которой выводим хлебные крошки?

Поставьте модуль Entity Tokens (входит в Entity API). После чего включите Devel, перейдите в ноде на вкладку модуля Devel и посмотрите доступные токены для этого материала. Все эти токены можно использовать и в модуле Path Breadcrumbs - только на данный момент они не все отображаются в списке токенов для крошек (в разработке), однако прекрасно работают.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 14 августа 2012 в 16:19

"SplasH" wrote:
Поставьте правило выбора - Custom PHP code, и в нём посмотрите $_SERVER['HTTP_REFERER'] - т.е. откуда пришёл пользователь. В зависимости от этого и показывайте крошки.

Совет достойный дарвиновской премии

Аватар пользователя SplasH SplasH 14 августа 2012 в 16:26

"RxB" wrote:
Совет достойный дарвиновской премии

Ты умеешь смотреть откуда пришёл пользователь иначе? Придумал свой метод Вити?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 14 августа 2012 в 16:30

Я уж лучше буду писать в сессию и дёргать оттуда, чем советовать такое, если мне такое нужно будет.
Не говорю о том уже, что далеко не все задумаются фильтровать REFERER, а тут и до XSS недалеко
Чорные сеошники будут рады

Аватар пользователя SplasH SplasH 14 августа 2012 в 16:40

"RxB" wrote:
Я уж лучше буду писать в сессию и дёргать оттуда, чем советовать такое, если мне такое нужно будет

А я вот именно за такое премию бы и давал. Зачем туда постоянно что-то записывать? Из-за этого как раз можно показать неверные крошки на странице.

"RxB" wrote:
Не говорю о том уже, что далеко не все задумаются фильтровать REFERER, а тут и до XSS недалеко

А с каких пор я обязан обучать php грамоте? Если разработчик не умеет - это же не мои проблемы.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 14 августа 2012 в 16:46

От 1 строки в сессии что-то изменится?

"SplasH" wrote:

А с каких пор я обязан обучать php грамоте? Если разработчик не умеет - это же не мои проблемы.


Я даю консультации по стратегическим вопросам(с). Понято

Аватар пользователя SplasH SplasH 14 августа 2012 в 16:48

"RxB" wrote:
От 1 строки в сессии что-то изменится?

А нахрена её использовать, если можно без неё?

"RxB" wrote:
Я даю консультации по стратегическим вопросам(с). Понято

Я не давал код, который вставить в блок. Я подсказал реализацию. В чём проблема?

Аватар пользователя Artu Artu 18 августа 2012 в 17:36

1.При создании правила выбора по словарю таксономии или термину в контексте ноды (для страницы ноды)возникает ошибка на странице ноды:

Notice: Undefined index: value в функции _ctools_entity_field_value_ctools_access_get_conf_field_values() (строка 172 в файле .../sites/all/modules/ctools/plugins/access/entity_field_value.inc).
Notice: Undefined index: value в функции ctools_entity_field_value_ctools_access_check() (строка 155 в файле .../sites/all/modules/ctools/plugins/access/entity_field_value.inc).

2.Конкретный Термин не выбирается в правиле выбора. Пишет "tid equals". Множественный выбор не возможен.

Последние beta и ctools.

Аватар пользователя alexzzamm alexzzamm 22 сентября 2012 в 5:00

"Artu" wrote:
1.При создании правила выбора по словарю таксономии или термину в контексте ноды (для страницы ноды)возникает ошибка на странице ноды:

Notice: Undefined index: value в функции _ctools_entity_field_value_ctools_access_get_conf_field_values() (строка 172 в файле .../sites/all/modules/ctools/plugins/access/entity_field_value.inc).
Notice: Undefined index: value в функции ctools_entity_field_value_ctools_access_check() (строка 155 в файле .../sites/all/modules/ctools/plugins/access/entity_field_value.inc).

2.Конкретный Термин не выбирается в правиле выбора. Пишет "tid equals". Множественный выбор не возможен.

Последние beta и ctools.

Та же проблема с этим модулем.

Аватар пользователя petu petu 26 октября 2012 в 20:08

Подскажите, а с кириллическими символами в урлах должно работать?
А то не получается настроить. Думаю, может причина в кириллице...

Аватар пользователя petu petu 22 января 2013 в 8:10

petu wrote:
Подскажите, а с кириллическими символами в урлах должно работать?
А то не получается настроить. Думаю, может причина в кириллице...

Раскурил я этот модуль. Хорошая штука!
С кириллицей работает. Но! Для нод нужно указывать не алиасы, а путь node/%nid
Для конструкций типа views, указываются уже реальные пути, например каталог/%tid .

Спасибо Евгению за модуль.

Аватар пользователя dnn13 dnn13 1 сентября 2013 в 15:11

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

===>С Custom breadcrumb разобрался за полчаса.

===============================================
БЕРУ СВОИ СЛОВА ОБРАТНО, РАЗОБРАЛСЯ
Очень гибкий и настраивается под любые требования.

Аватар пользователя ihtiandr ihtiandr 21 января 2013 в 18:49

провозился с v2 - не шла таксономия. А вот с v3-dev все пошло прекрасно, только тогда заценил его прелесть. Спасибо за модуль!

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 21 января 2013 в 22:12

Ставил недавно - интерфейс слегка неочевидный. Крошки так и не заработали. Работа конечно сильная.
В конце концов, среди всех модулей крошек нашёл единственный, который меня устроил - Crumbs. Прикольный минимальный интерфейс + АПИ ориентированный

Аватар пользователя iNFerNo iNFerNo 23 января 2013 в 12:27

3dev версия не выводит в крошках набор букв километровых , пришлось возвращать CTools до 1 верисии а модуль крошек до версии середины года 2012.

скоро ли исправится баг?

Аватар пользователя SplasH SplasH 23 января 2013 в 12:36

iNFerNo, читайте внимательнее описание модуля. Там написано, что для корректной работы модуля необходимо применить к CTools этот патч.

Там в последней версии Chaos Tools были поломаны многоуровневые токены.

Аватар пользователя SplasH SplasH 23 января 2013 в 12:37

"petu" wrote:
Для нод нужно указывать не алиасы, а путь node/%nid

Ага, при задании урла нам в подсказке так и написано. И в описании модуля тоже это написано Smile

Аватар пользователя petu petu 24 января 2013 в 14:33

SplasH wrote:
"petu" wrote:
Для нод нужно указывать не алиасы, а путь node/%nid

Ага, при задании урла нам в подсказке так и написано. И в описании модуля тоже это написано :)

А мы не ищем легких путей ;). Наш девиз: пробуем, пытаемся, экспериментируем; а уже если не получается - читаем инструкцию ;)).

Аватар пользователя petu petu 24 января 2013 в 14:29

Господа, подскажите, как "накрошить" именем книги, если пользователь находится на странице этой книги?

То есть, есть модуль book. У него есть "подшивки". Я как пользователь нахожусь на странице подшивки. Как программист хочу вывести в крошки следующую последовательность:

Мой супер-мега-сайт о многомиллионном бизнесе > Название подшивки > Глава 2

Вот с названием подшивки - беда.

В токенах есть %nid:book. Подозреваю, что глюк в токенах не выводит остальные вероятные комбинации. Пробовал комбинации типа %nid:book:parent:name или %nid:book:parent:url, но не добился того, что необходимо.

Какие вообще есть способы увидеть те токены, которые не отображаются?

Заранее спасибо!

Аватар пользователя Tibor_Ferenci Tibor_Ferenci 5 ноября 2013 в 19:23

Странно... Во время создания, сразу после установки модуля, ввожу имя, затем на следующей странице жму Change, после чего экран осветляется, а всплывающее окно с опциями не появляется... И так висит.

Аватар пользователя protoftor protoftor 8 апреля 2014 в 16:23

Уаажаемые коллеги, а этот модуль позволяет геннерить хлебные крошки для материалов, у которых контент-манагер не поставил галочку "Создать пункт меню"? ВЫ будете смеяться, но это - проблема. Забудут в 10-20 новостях галочку поставить и удивляются потом, куда из хлебных крошек делся родительский пункт "Новости"

Аватар пользователя kodo kodo 23 апреля 2015 в 9:30

Блин и модуль хороший и работал он у меня как-то...

А тут:
Notice: Undefined index: argument в функции path_breadcrumbs_ui_argument_context_form() (строка 1057 в файле /home/u2986/domains/******/sites/all/modules/path_breadcrumbs/path_breadcrumbs_ui/path_breadcrumbs_ui.module).

похоже и у других было.
версия 7.x-3.2
Chaos Tools 7.x-1.7

Ни для таксономии, ни для нод, ни для даже пути вьюсов не работает.

В чем может быть проблема?