Способ создания пункта меню “Редактировать личные данные” или “Мой трекер”

Здравствуйте уважаемые!

Как часто хочется добавить в меню пункт “Редактировать профиль” или “Мой трекер”, но стандартные средства Друпала не позволяют это сделать (возможно плохо искал) и приходится писать код или смириться с невозможность вывести эти пункты меню.

Сегодня в голову пришла идея, попробовал и получилось! Не сочтите извращенцем, но я добавил эти пункты напрямую через базу.

Описываю шаги:

Заходим в базу MySQL Жмем ссылку SQL (см. скрин) В текст запроса вставляем текст из файла menu_create.sql Жмем ОК Если ошибок не было, то заходим на свой сайт в Secondary menu Очищаем кеш (опционально) Готово!

Помимо ссылки “Редактировать профиль” создаются еще несколько ссылок, если не используете модули, выводящие эти ссылки в профиле пользователя – просто удалите их из Secondary menu обычным способом.

ЗЫ: при импорте в базу может выпасть сообщение о невозможности создания индекса – это значит, что меню с индексами, которые я прописал в sql-файле (50001, 50002, …) уже имеются в базе, выход – отредактировать menu_create.sql.

Прикрепленный файл Размер attach.zip 50.98 кб screen.jpg 67.12 кб

Источник: http://www.drupal.ru/node/51137

Модуль ajaxmenu – подгрузка collapsed пунктов меню на лету

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

После установки нужно сбросить кеш.

Надеюсь кому-нибудь пригодится.

Пришлось использовать хак с подменой обработчика menu_item_link – через хук theme_registry_alter меняется на свой обработчик, а старый запоминается в параметр original_function. Обработчик в атрибуты ссылки дописывает id для ссылки содержащий mlid и передает вызов дальше в оригинальный обработчик. Кстате такой способ можно использовать для перехвата почти всех вызовов функций от theme (для шаблонов есть template_preprocess).

Потом яваскрипт вытаскивает mlid из id ссылки, и вешает обработчик наведения мышки с отсечкой (срабатывает если мышь более полусекунды задерживается на пункте меню), который делает аяксовый запрос детей для нужного пункта меню по mlid.

Прикрепленный файл Размер ajaxmenu.tgz 1.64 кб

Источник: http://www.drupal.ru/node/49219

© 2009 Обзор CMS