Здравствуйте.
Многие модули Друпала имеют неприятную привычку пихать свои пункты в меню пользователя (я так называю меню, отображающееся вверху на страничке профиля). Эти пункты я успешно отстреливал, редактируя код модулей.
Однако с модулем Signups возникли сложности. Даже если очистить код во всех хуках, которые я нашел в файле .module, назойливый пункт меню, предлагающий посмотреть все события, на который подписался пользователь, остается.
Я еще не очень хорошо изучил систему хуков, так что прошу подсказать, откуда нужно выковыривать заразу. Или, может, я все усложняю и есть какие-нибудь удобные модули для редактирования этого самого пользовательского меню?
Комментарии
а в admin\build\menu не отключается разве?
там, вроде должны быть все пункты.
Нет Там меню навигации, основное и дополнительные ссылки.
А если в навигацию зайти?
Но в навигации этих пунктов нет.
Тогда полтегейст, такого не бывает
Вы хотите сказать что, все пункты пользовательского меню содержатся в навигации? Но:
а) Эти пункты собственно в меню навигации не отображаются и никогда не отображались
б) В списке пунктов навигации я их никогда не видел, хотя, конечно, излазил его вдоль и поперек, прежде чем полезть в код
Я хочу сказать, что быть такого не может чтобы пункт был, но в списке меню его не было
По-моему, ничего странного в этом нет, эти пункты меню отображаются только на странице профиля, чего бы им делать в списке пунктов навигации?
А вот теперь скриншоты, используя свою терминологию вы путаете других
смею предположить, идется речь про табы в профиле.
Окей, наверно, это надо было сделать в самом начале
Открыта страница профиля. Мерзавец обведен красным (надпись переведена, в оригинале "Signups").
Да-да, именно! Прошу прощения за свое незнание терминологии.
модуль tabtamer
Большое спасибо, это именно то, что нужно! Мне удалось удалить назойливый пункт, однако на его место пришел другой, еще более загадочный. Внимание на картинку. Как видно, оба ссылаются на одно и то же место (в данном случае users/admin). В TabTamer'е отображается только один из них - View (его как раз нужно оставить). Поиск в переводах строчки "Текущие" указывает на... Модуль OG. Есть идеи?
«Многие модули Друпала имеют неприятную привычку пихать свои пункты в меню пользователя (я так называю меню, отображающееся вверху на страничке профиля). Эти пункты я успешно отстреливал, редактируя код модулей.»
Дурь несусветная, друпал устроен так, что практически любой чих движка перекрывается либо альтером либо theme функцией либо preprocess функцией и если у Вас хватает ума лазить по коду чужих модулей, то наберитесь сил и терпения почитать о темизации контента в друпал, к примеру Ваши пункты меню а именно ими они и являются просто выводятся в табах спокойно перехватываются на hook_menu_alter() и там так же спокойно давятся. Так что мой Вам совет лазьте в код не своих модулей только для того чтоб посмотреть на примеры реализации а не хакать и учите мат часть.
Можно без меню альтера просто перекрыть функцию theme_menu_local_tasks(); и все свои проблемы решить в ней.
Проблема решена с использованием этого материала: http://drupal.org/node/68792
Совет отличный, я бы и сам рад, вот только сроки поджимают. Свободное время и так трачу на поиск и чтение толковой документации, но, к сожалению, этого самого времени не хватает. Вот, о preprocess, например, узнал только сегодня, и еще о множестве хуков.
Повторюсь, поджатие сроков вовсе не говорит о том что надо писать говнокод. Уважайте себя и прежде всего своего заказчика. Поймите что при первом же обновлении у Все ваши правки полетят к чертовой матери и это еще не самое страшное, когда этот проект попадет на саппорт к нормальному кодеру он помянет Вас "добрым словом" не один десяток раз и плюс ко всему, есть правила и стандарты кодирования в друпал и чем больше Вы их будете придерживаться тем больше людей к Вам потянутся с заказами поскольку аккуратность и педантичность в вопросах кода и его оформления немаловажный фактор (это из собственного опыта Вам говорю).
Можно быть тысячу раз гением кодирования, но выбор заказчика между:
<?php
$form['title'] = array('#type' => 'textfield', '#title' => 'Мой супер тайтл', '#weight' => -89, '#attributes' => array('class' => 'title'));
к примеру в модуле node.module в функции построения формы нода
?>
<?php
и
$form['title'] = array(
'#type' => 'fieldset',
'#weight' => -89,
'#title' => t('My super title'),
'#attributes' => array('class' => 'title')
);
в Вашем модуле на hook_form_alter
?>
будет очевиден и на 99% успешен в пользу второго примера.