Вкладки Drupal $, не включающие редактирование / ревизии / рабочий процесс
Вопрос
Я унаследовал сайт Drupal5, и мне было поручено внести некоторые изменения, но я не могу понять, с чего начать поиск.
На многих страницах есть меню, доступное администраторам, которое позволяет вам выполнять определенные действия:
Обзор Специалисты Ресурсы и инструменты В данной области Новости Мероприятия Курсы Мультимедиа Редактировать Отслеживать Рабочий процесс Настройки
Однако в некоторых разделах существуют разные варианты:Предварительный просмотр Планировка Настройки Настройки макета Дополнительно Контекст Содержание Экспорт
Мне нужно добавить (Редактировать, Отслеживать, Рабочий процесс, настройки) во второе меню, но я не уверен, как это сделать.
Я вижу в page.tpl.php есть region для $ tabs, но я не могу понять, как это создается.
Насколько я могу судить, тема основана на теме Zen STARTERKIT.
Решение
Переменная $tabs обычно заполняется пунктами меню типа MENU_LOCAL_TASK
.
Взгляните на система меню, и особенно в hook_menu()
чтобы получить основную идею.Это сводится к сопоставлению функций обратного вызова с путями.Если URL-адрес совпадает с путем, определенным в hook_menu
(может содержать заполнители!), функция обратного вызова, зарегистрированная для этого пути, будет вызвана для генерации содержимого для этого URL.
"Тип" этого hook_menu
элемент определяет, как комбинация путь / обратный вызов представлена в системе.Это может быть MENU_CALLBACK
, что означало бы только зарегистрированную комбинацию пути / обратного вызова, но отсутствие соответствующего пункта меню "real".A MENU_NORMAL_ITEM
, было бы то же самое, но со "стандартным" пунктом меню, напримерв меню навигации.A MENU_LOCAL_TASK
это то же самое, но соответствующий пункт меню обычно отображается в $ tabs, а не в меню.
Все MENU_LOCAL_TASK
которые используют один и тот же базовый путь, в конечном итоге будут представлены в виде группы вкладок.Итак, если бы у вас были такие пути, как:
- некоторый/путь/tab1
- некоторые/path/tab2
- некоторые/path/tab3
и все это определяется как MENU_LOCAL_TASK
, вы бы увидели по одной вкладке для каждого из них на каждой странице, которую они представляют.
Итак, чтобы найти места, которые вам нужно изменить / улучшить, вы должны выполнить поиск в своей кодовой базе для всех hook_menu()
реализации, которые определяют пути, по которым отображаются эти вкладки.Обратите внимание, что не обязательно все они должны быть определены в одном и том же месте, но могут поступать из разных hook_menu
реализации в разных модулях.Затем вам нужно будет добавить определения меню для вкладок, которые вы хотите добавить, сопоставив соответствующие пути с функциями обратного вызова.Функции обратного вызова возвращали бы содержимое страниц, которое пользователь должен видеть при нажатии на вкладки.
Другие советы
Если вы отображаете узел, обычно в $ tabs уже есть ссылка Редактировать, поскольку ее нет, это может быть что-то другое (какой-то модуль компоновки).Вам нужно добавить параметры редактирования / отслеживания, чтобы редактировать / отслеживать, какого рода контент?Конкретный узел или что?