Таксономия и taxonomy_menu

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

Аватар пользователя BorisVlasenko BorisVlasenko 22 апреля 2009 в 0:56

Как я делал меню на основе таксономии.
(Мысли в процессе освоения друпала)
(Подчеркиваю: все это может быть неправильно или неоптимально. Проверяйте!)

Создаю городской образовательный портал. ozedu.ru
Одни и те же материалы должны быть доступны через разные пункты меню: Родителям, Школа № 10, Учителям и т.д., поэтому навигацию решил делать на основе таксономии, для чего и поставил taxonomy_menu.

Сразу столкнулся с проблемой: taxonomy_menu включил, а где и что настраивать, как создать меню - не увидел.
http://drupal.ru/node/28474
Оказалось, что настройки taxonomy_menu надо искать в структуре (в словарях, там где прописываются термины).

Сказано - сделано.

Нашел кучу вопросов о том, как сделать ту или иную хитрость, а о том, как начать - ничего. Только два слова на сетегноме: http://setegnom.com/node/874
Стал настраивать - и понял, что не понял. Целый час потратил, чтобы разобраться.

1. Автоматически создается меню только на основе словаря, а не на основе термина.
словарь - основной пункт, термины - подпункты.
Нельзя выбрать в качестве основного пункта какой-либо термин.
Если нужно, чтобы термин словаря стал основным пунктом меню, то придется сделать это вручную.

2. Если удалять термины из словаря, который уже подключен в меню, то при сохранении появляются ошибки:
warning: mysqli_real_escape_string() expects parameter 2 to be string, array given in /home/o/ozeduru/htdocs/includes/database.mysqli.inc on line 323.
Не знаю, насколько это серьезно и о чем это, но несмотря на эти ошибки удаление проходит нормально и всё остальное (вроде бы) работает.
Если отключить создание меню на основе словаря, а потом удалить, тогда эти ошибки не появляются.

3. Подробнее о настрйке taxonomy_menu:

1. На странице admin/content/taxonomy выбрать словарь, на основе которого будет создан пункт меню

2. вместо = DISABLED = выбрать какое-нибудь заранее созданное меню (на admin/build/menu)

3. Menu Path Type: С иерархией я не очень разобрался. По-моему это включение в список вывода пунктов и подпунктов. Если же выбрать Custom Path, то будет выдан список только по тому термину, по которому щелкнули (без его надпунктов).
Я ставил Custom Path

4. Base Path for Custom Path: taxonomy/term
обратите внимание, что term не завершается слешем.

5. Display Depth in Custom Path: не разобрался
(Как я понял этот параметр позволяет-таки строить меню не на основе всего словаря, а от определенного термина на сколько-то в глубину. но сделать это у меня не получилось. Как разберусь - так подправлю)

6. Syncronise changes to this vocabulary
Обновлять меню при изменении словаря
Да

7. Display Number of Nodes
Показывать количество документов по этому термину

8.Hide Empty Terms
Прятать пустые

9.Item for Vocabulary
Не разобрался.

10.Auto Expand Menu Item
Меню всегда раскрыто.
Или меню всегда раскрыто, или щелчками надо его разворачивать

11. Display Descendants
Не понял.

12.
Select to rebuild the menu on submit.
Не понял.

Еще один момент: при удалении словаря, не отключенного от меню, выпадает куча однотипных ошибок, словарь удалятеся, но пункт в меню остается!

Комментарии

Аватар пользователя eXanDr eXanDr 3 июля 2009 в 21:09

«Нельзя выбрать в качестве основного пункта какой-либо термин.»
Если нужно что бы основным пунктом были ТОЛЬКО термины, а заголовок словаря должен отсутствовать, то есть решение.
Надо просто отключить в меню пункт словаря. Тогда словарь перестанет быть пунктом меню а все его термины (кроме дочерних - иерархия сохраняется) станут основными

Аватар пользователя Sarc Sarc 25 августа 2009 в 2:55

«Еще один момент: при удалении словаря, не отключенного от меню, выпадает куча однотипных ошибок, словарь удалятеся, но пункт в меню остается!»

Наверно это не правильно, но я сделал так:

DELETE FROM drupal_menu_links WHERE mlid IN (SELECT mlid FROM drupal_taxonomy_menu WHERE vid NOT IN (SELECT vid FROM drupal_vocabulary));
DELETE FROM drupal_taxonomy_menu WHERE vid NOT IN (SELECT vid FROM drupal_vocabulary);

drupal_ заменяем на префикс к таблицам

Аватар пользователя Ne_L Ne_L 17 сентября 2009 в 22:02

"BorisVlasenko" wrote:
9.Item for Vocabulary
Не разобрался.

"Пункт меню для словаря"
Заглавным пунктом меню, генерируемого модулем - будет название словаря - иначе заглавные пункты меню будут "верхние" термины этого словаря.
"BorisVlasenko" wrote:
11. Display Descendants
Не понял.

"Отображать потомков" если включено то будут выводится не только ноды принадлежащие конкретному термину словаря но и ноды принадлежащие дочерним терминам этого, родительского термина.
"BorisVlasenko" wrote:
Select to rebuild the menu on submit.
Не понял.

Если включить то при сохранении меню будет полностью удалено и создано заново, правда не понял зачем это если есть опция "Syncronise changes to this vocabulary", думаю что то вроде очистить кэш применительно именно к данному меню.
Эта опция учитывается только при сохранении, если заново зайти в настройки словаря она будет снова выключена.

С настройками Custom Path и Hiererchy не разобрался - очень мечтаю Smile чтобы кто то научил.

Аватар пользователя Тыдж Тыдж 30 сентября 2009 в 3:48

крайне благодарю за

"BorisVlasenko" wrote:
2. Если удалять термины из словаря, который уже подключен в меню, то при сохранении появляются ошибки:
warning: mysqli_real_escape_string() expects parameter 2 to be string, array given in /home/o/ozeduru/htdocs/includes/database.mysqli.inc on line 323.

я уж начал переживать...