Breadcrumb и taxonomy

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

Аватар пользователя xlcq xlcq 27 февраля 2007 в 23:53

Решил попробовать сделать первый сайт на Drupal 5.1. И наткнулся на проблему с меню.
Само меню реализовано при помощи стандартного меню Drupal + сделан словарь с набором терминов. Каждый пункт меню ссылается на отделный термин, например taxonomy/term/34 и т.д. (на эти сслыки также сделаны aliases). Проблема следующая - если захожу в любой пункт меню (http://www.goa.lv/beach/anjuna), то он сам становиться выделеным и в основной части окна отображаются все статьи по данному пункту меню. Но как только я нажимаю просмотреть люую статью уже никакой пункт меню не выбран (http://www.goa.lv/node/38) Sad
Может это архитектурно не верно, но как сделать чтобы при просмотре конкретной статьи был выбран соответствующий пункт меню или есть какой-то другиой подход для реализации такой функциональности?

Сам сайт находиться в стадии разработки, дизайн еще не прикручен, так что строго не судите Smile

Комментарии

Аватар пользователя xlcq xlcq 28 февраля 2007 в 10:41

Не совсем понял о какой привязке идет речь. Где можно указать к какому пункту привязана статья? Smile
Пробовал при редактировании истории в блоке Меню указать в поле "Parent item:" необходимое меню, но это не помогло Sad

Аватар пользователя Dan Dan 28 февраля 2007 в 12:43

Например такая конфигурация.

Меню:
-- Информация (путь - taxonomy/term/13/all, родительский пункт - корень меню)
-- -- Заметка1 (путь - node/11, родительский пункт - "Информация")
-- -- Заметка2 (путь - node/12, родительский пункт - "Информация")
-- -- Статьи (путь - taxonomy/term/14/all, родительский пункт - "Информация")

Если идём в меню "информация", получаем список: "Заметка1", "Заметка2" и все статьи, привязанные к термину 14.
Если идём в меню "информация/Статьи", получаем все статьи, привязанные к термину 14.
Если читаем статью, привязанную к термину 14, меню "информация" и меню "Статьи" развёрнуты, статья активна.

Аватар пользователя xlcq xlcq 28 февраля 2007 в 15:01

Все равно что-то не работает Smile Похоже я что-то недопонимаю.

Специально для упрощения понимания убрал для двух пунктов aliases. Получается такая конфигурация:

Меню:
-- Пляжи (путь taxonomy/term/5/all) родительский пункт корень меню.
--- Anjuna beach (taxonomy/term/34/all) родительский пункт корень меню "Пляжи".

Если идем в меню "Пляжи" видим все заметки (истории) о всех пляжах (см. http://www.goa.lv/taxonomy/term/5/all).

Если идем в подменю "Anjuna beach" видим все заметки (истории) о пляжах по категории "Anjuna beach" (см. http://www.goa.lv/taxonomy/term/34/all). Меню раскрыто и отображается как надо!

Из этого списка идем в конкретную статью (историю), которая принадлежит категории Anjuna beach (http://www.goa.lv/node/38) меню закрывается! Sad

Что все-таки я делаю не так? Smile

Аватар пользователя xlcq xlcq 28 февраля 2007 в 22:04

Пожалуйста помогите советом - горю!
Сделал уже тестовый вариант, совершенно простой: только меню два пункта, в каждом два подпункта и столько же терминов.
И все это также не корректно работает - при выборе статьи меню закрывается хоть ты тресни :E

Аватар пользователя Dan Dan 1 марта 2007 в 7:46

Прошу прощения, забыл упомянуть, что каждая статья в категории "Anjuna beach" должна быть "привязана" к меню "Anjuna beach". Попробуй.

Аватар пользователя xlcq xlcq 1 марта 2007 в 9:28

Опять не удача Sad
Я уже пробовал указать для статьи поля "Title" и "Parent Item" в блоке "Menu". Получается следующее: В меню появляется еще один пункт "Anjuna beach" который ссылается напрямую на эту статью node/38/

Аватар пользователя xlcq xlcq 1 марта 2007 в 10:14

Получается теперь два пункта меню "Anjuna beach", один ссылается на определенную статью (статью node/38/), а второй на все статьи, относящиеся к категории "Anjuna beach" (taxonomy/term/34/all).

См. http://www.goa.lv/taxonomy/term/5/all

Аватар пользователя xlcq xlcq 1 марта 2007 в 12:21

Спасибо!!!!

Значит, резюмируя, решение проблемы следующее:

При добавлении статьи необходимо указать Название пункта меню для этой статьи, и установить Parenta тот пункт, под которым она должна отображаться.
Правда в этом случае я вижу один Side Effect:
Кол-во подпунктов = кол-ву статей для данного пункта, что может быть несколько не удобно если планируется большое кол-во материалов.

Интересно возможно ли как-то ограничить глубину при отображении меню Smile

p.s. Я еще не достал своими вопросами?

Аватар пользователя Dan Dan 1 марта 2007 в 20:28

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

Если статей много, эту проблему надо решать по другому. Самый простой - в теме анализировать принадлежность материла к терму, и смотреть есть ли пункты меню с адресом, равным этому терму. Другой способ - искать модуль, например присмотрись к book, чем чёрт не шутит Smile

Аватар пользователя xlcq xlcq 2 марта 2007 в 12:10

Чтож будем пробовать, спасибо за help Smile

Ты пишешь "Самый простой - в теме анализировать принадлежность материла к терму, и смотреть есть ли пункты меню с адресом, равным этому терму.".

Я не очень разбираюсь в архитектуре Drupala, почему данный анализ необходимо делать в теме? Может есть похожие примеры, PHP вроде знаю нормально, так что если дашь наводку думаю размерусь.

Аватар пользователя Dan Dan 2 марта 2007 в 14:18

Ну, в смысле для меня простой Smile И в лоб.

Почему в теме? Ну тема собственно нужна как раз для этого - формирование информации для отображения. Потому и в теме.

Есть ещё вариант самому писать модуль, но думаю этот вопрос уже решён и ответ имеется на drupal.org. Попробуй поискать.

Аватар пользователя xlcq xlcq 2 марта 2007 в 18:06

Придумал забавное решение:
При добавлении статьи мы присваиваем ей отдельный пункт меню (так как ты сделал), потом идем в настройки меню и делаем этот пункт меню disabled. После этой манипуляции он не отображается в меню, но при выборе статьи меню остается открытым Smile

Аватар пользователя rtyom rtyom 8 марта 2007 в 19:55

мда. столкнулся с такой же проблемой. отдельные пункты в моем случае - не вариант, так как статей будут тысячи...

похоже, единственное решение вот это:
--------
"Если статей много, эту проблему надо решать по другому. Самый простой - в теме анализировать принадлежность материла к терму, и смотреть есть ли пункты меню с адресом, равным этому терму."
--------

Кто бы сформулировал на аглицком для drupal.org?

Аватар пользователя Dan Dan 9 марта 2007 в 0:27

Не, это не единственное решение Smile
Надо просмотреть (ибо писать с нуля - лень) все модули, работающие с меню и таксономией. Нужный кусок кода в них обязательно найдётся.

Аватар пользователя Dan Dan 25 марта 2007 в 22:54

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

Аватар пользователя rtyom rtyom 10 апреля 2007 в 19:43

Блин, не понимаю, чем это поможет, Давайте на кокретном примере, см. http://dev.internews.kz/:
идем в раздел "Юридическая поддержка", затем в secondary - "Комментарии", после грузим материал - все, меню потеряно.