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

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

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

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

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

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

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

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

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

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

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

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

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

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

Комментарии

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

7 июня 2012 в 16:51

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

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

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

Контекст не могу назначить
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).

7 июня 2012 в 16:57

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

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

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

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

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

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

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

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

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

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

10 ноября 2015 в 11:48

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

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

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

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

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

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

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

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

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

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

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

7 июня 2012 в 19:08

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

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

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

7 июня 2012 в 19:41

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

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

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

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

7 июня 2012 в 19:48

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

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

7 июня 2012 в 19:56

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

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

7 июня 2012 в 20:24

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

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

8 июня 2012 в 9:29
Аватар пользователя S_F S_F 0

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

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

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

8 июня 2012 в 15:56

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

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

8 июня 2012 в 18:20

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

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

"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=...

9 июня 2012 в 16:08

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

10 июня 2012 в 17:19

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

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

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

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

11 июня 2012 в 17:28

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

6 июля 2012 в 1:57

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

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

9 июля 2012 в 9:51

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

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

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

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

14 августа 2012 в 16:12

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

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

14 августа 2012 в 16:19

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

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

14 августа 2012 в 16:26

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

14 августа 2012 в 16:30

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

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

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

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

14 августа 2012 в 16:40

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

"SplasH" wrote:

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


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

14 августа 2012 в 16:46

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

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

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

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

14 августа 2012 в 16:48

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.

18 августа 2012 в 17:36

"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.

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

22 сентября 2012 в 5:00

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

26 октября 2012 в 20:08

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

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

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

22 января 2013 в 8:10

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

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

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

1 сентября 2013 в 15:11

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

21 января 2013 в 18:49

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

21 января 2013 в 22:12

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

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

23 января 2013 в 12:27

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

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

23 января 2013 в 12:36

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

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

23 января 2013 в 12:37

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

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

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

24 января 2013 в 14:33

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

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

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

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

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

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

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

24 января 2013 в 14:29

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

5 ноября 2013 в 19:23

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

8 апреля 2014 в 16:23

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

А тут:
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

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

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

23 апреля 2015 в 9:30