перехватывающие функции drupal и их аргументы
-
12-09-2019 - |
Вопрос
Прямо сейчас я читаю Pro Drupal development, и в примере на странице 82 используется следующая функция:
function menufun_menu_link_alter(&$item, $menu){
if ($item['link_path'] == 'logout'){
$item['link_title'] = 'Sign off';
}
}
Я понимаю, что я могу узнать, какие параметры принимает "hook_menu_link_alter", просмотрев api.drupal.org.Чего я не понимаю, так это как я должен узнать, что на самом деле содержит $item.В этом примере использовались $item['link_path'] и $item['link_title'] оба - откуда он узнал об их существовании?
Конечно, меня интересует не только этот конкретный пример.Я хочу иметь возможность делать это для любой функции, которую я просматриваю в drupal.
Заранее спасибо за помощь!
Решение
Если бы вы зашли на api.drupal.org и посмотрели вверх hook_menu_link_alter
, вы бы получили эту страницу:
http://api.drupal.org/api/function/hook_menu_link_alter/6
Который включает в себя следующее примечание:
"$item
Ассоциативный массив, определяющий ссылку на меню, переданную в menu_link_save()
."
Если вы перейдете по ссылке на menu_link_save
пейдж, ты была бы здесь:
http://api.drupal.org/api/function/menu_link_save/6
В котором содержимое $item
параметр четко указан в разделе Параметры.
Другие советы
Если вы используете модуль Devel, я хотел бы добавить
dsm($item)
там, чтобы посмотреть, что в данный момент содержит $item.Он печатает приятный интерактивный навигатор массивов / объектов.
Конечно, вам все равно придется обратиться к API, чтобы просмотреть все возможности, поскольку это показывает только то, что установлено в данный момент.Но обычно в нем содержится достаточно, чтобы получить то, что я ищу.
Использование документов API или отображение переменных - это оба хороших инструмента для получения информации.У них обоих есть свои достоинства, использование devel в основном полезно, когда вы отлаживаете и хотите посмотреть, что происходит.Большая часть того, чтобы быть хорошим разработчиком drupal, заключается не в том, чтобы знать все, а в том, чтобы уметь отслеживать соответствующую информацию.Иногда также может быть очень полезно ознакомиться с кодом или кодами других пользователей.Наблюдение за тем, как другие что-то делают, иногда может очень помочь, когда вы хотите сделать что-то подобное.Google также может быть хорошим инструментом для обсуждения какой-либо проблемы с кем-либо.Существует много возможностей, вам просто нужно научиться пользоваться этими инструментами и использовать то, что подходит именно вам.Потратив больше времени на api.drupal.org вы действительно станете лучше извлекать информацию.