хлебные крошки

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

Комментарии

Аватар пользователя irina81 irina81 23 августа 2013 в 6:44

может уже есть готовый модуль или надо модуль писать?
если в своем модуле ,то подскажите как?
буду благодарна за любое рациональное предложение

Аватар пользователя irina81 irina81 23 августа 2013 в 23:25

"dotter90" wrote:
конечно есть

"Василий Сергеевич" wrote:
самый лучший модуль

а может вы все таки посмотрите пример ,который я привела?
попробуйте навести курсор на отдельные ссылки в крошках
там структура такая
home - раздел - подраздел - подподраздел
при наведении на раздел выезжают все разделы ,при наведении на подраздел -соответственно все подразделы

Аватар пользователя irina81 irina81 24 августа 2013 в 5:03

я так понимаю такого модуля скорее всего нету
придется выводить через path breadcrumb ,а потом через theme_breadcrumb как то прикреплять к существующим пунктам дополнительные
или же все таки может предложите другие варианты ,о которых я не знаю
просто такие крошки вижу уже не на первом сайте (вот здесь еще к примеру http://www.myhome.ru/catalog/armchairs/81713, из рук в руки )
а на друпале такой реализации я еще не встречала

Аватар пользователя sg85 sg85 24 августа 2013 в 7:27

я бы выкинул на фиг path breadcrumb и сделал бы реализацию хлебных крошек в кастомном модуле, благо сей процесс занимает гораздо меньше времени, чем возня с тем же path breadcrumb, hansel или еще чем, кроме того, данный способ позволяет реализовать самые извращенные и дикие фантазии.
Подсказка куда копать - hook_page_alter(реализация логики), drupal_set_breadcrumb(установка хлебных крошек), в тяжелых случаях(Ваш случай как раз под это попадает) имеет смысл позаботиться о кеше(cache_get cache_set), в theme_breadcrumb возможно понадобится изменить стандартный разделитель крошек, отображение всплывающих блоков jQuery\CSS3 по вкусу.

Чем плох Ваш способ: медленный и жутко неудобный, я сам лично на эти грабли уже один раз наступал, хватило(если интересно, напишу подробнее, но только не ночью).

Аватар пользователя irina81 irina81 24 августа 2013 в 8:05

"sg85" wrote:
Чем плох Ваш способ: медленный и жутко неудобный

а какая разница : в drupal_set_breadcrumb формировать крошки или потом к сформированным модулем в функции темизации в цикле добавить нужному элементу дополнительный список выбранных терминов?
и cache_set как устанавливать лучше - с указанием time expiration или permanent?
Кеш в принципе здесь уместен ,тк я же не буду категории менять каждых 5 минут - я бы установила кеш в перманент и в свою таблицу и при необходимости чистила вручную Cache_clear_all с указанием ключа и таблицы
или как лучше сделать?
"irina81" wrote:
в theme_breadcrumb возможно понадобится изменить стандартный разделитель крошек, отображение всплывающих блоков jQuery\CSS3 по вкусу.

ну это то я уже сделаю:)

Аватар пользователя sg85 sg85 24 августа 2013 в 16:06

"irina81" wrote:
Кеш в принципе здесь уместен ,тк я же не буду категории менять каждых 5 минут - я бы установила кеш в перманент и в свою таблицу и при необходимости чистила вручную Cache_clear_all с указанием ключа и таблицы

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

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

1 в drupal_set_breadcrumb вы возвращаете массив с html, в то время как в функции темизации Вам придется обрабатывать строки этого массива вида <a href="/">Главная</a>, например, через регулярные выражения, которые не являются самой быстрой вещью, однако компенсируются кешем.
2 не забывайте про возможные глюки при кешировании в 2х независимых местах(в модуле хлебных крошек и в теме(ваш)), хотя на первый взгляд в Вашем конкретном случае их быть не должно.
3 Ваш код будет отрабатывать даже тех страницах, к которым модуль хлебных крошек не имеет никакого отношения.
4 Часть логики получится в админке, часть в теме. Хотя в друпал такое встречается довольно часто.
5 А если захочется полностью сменить тему?
6 Если есть возможность выкинуть лишний модуль, почему нет?
7 у рута кеш работает не так как у остальных(вернее сказать, почти не работает, при разработке на каком нибудь денвере все это дело может оказаться весьма ощутимым)
8 единственный его плюс, это наличие админки, однако, с тем учетом, что для некоторых изменений настроек все равно придется лезть в код, этот плюс весьма сомнителен.

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

Аватар пользователя irina81 irina81 24 августа 2013 в 18:03

"sg85" wrote:
1 в drupal_set_breadcrumb вы возвращаете массив с html, в то время как в функции темизации Вам придется обрабатывать строки этого массива вида Главная, например, через регулярные выражения, которые не являются самой быстрой вещью, однако компенсируются кешем.

я же хитрая - я придумала по другому
когда я в темизации перебираю массив с ссылками крошек foreach ($breadcrumbs as $key => $breadcrumb)
у меня в зависимости именно от итерации получаются термины
к примеру в моем случае ,если $key == 1 , то значит термины с depth = 0 , ну и так далее , В ручном режиме разумеется
но при таком подходе если я добавлю какой то пункт в крошки ,то все может съехать
но все равно то все создается вручную - то есть я вроде как получила быстрое и рабочее решение
ну и плюс к этому я так поняла , для страницы , которая имеет конкретный термин (в моем случае это подподраздел)
надо в кеш записывать с ключом который включает в себя tid , так как для каждого материала принадлежащего конкретному подподразделу - свои крошки должны получится
ps никогда не думала ,что крошки мне дадутся так тяжело -мне впервые пришлось лезть в api и разбираться в нем бессонными ночами , я бы уже это и на аутсорсинг отдала ,
но саму уже затянуло ,да и тем более уже почти все сама сделала

Аватар пользователя sg85 sg85 25 августа 2013 в 0:45

"irina81" wrote:
но при таком подходе если я добавлю какой то пункт в крошки ,то все может съехать

"sg85" wrote:
4 Часть логики получится в админке, часть в теме.

пожалуй это самое главное неудобство

В любом случае Вам придется парсить $breadcrumb выделяя от туда путь ссылки, прямое сравнение не годится, т.к. во первых, Вы можете в будущем добавить какой-нибудь модуль, влиящий на вывод ссылок на сайте, во вторых, не забываем про локализацию(это вариант, если нужна некоторая гибкость).

Однако, если у Вас несложная структура навигации и нужно лишь в паре-тройке мест на всем сайте прицепить одни и те же всплывающие блоки, то Ваш вариант вполне может оказаться "в тему".