Редактировать 2 (для профиля контента)
Этот пример для вкладки профиля контента.Просто измените $type
на короткое имя типа контента для профиля.Здесь также показано, как очистить код для реального использования (мои предыдущие примеры были действительно очень подробными):
function mymodule_menu_alter(&$items) {
// Specify the content profile type you'd like to work with
$type = 'profile';
// Make sure the user has a Content Profile to edit
if (!empty($items['user/%user_category/edit/' . $type])) {
// Pull out the menu items we want to modify.
$account = &$items['user/%user_category/edit/account'];
$edit = &$items['user/%user_category/edit'];
$profile = &$items['user/%user_category/edit/' . $type];
// Specify the Edit Account page as just a regular tab.
// You do not need to change this block: this will always be the same as long
// as you don't want Edit account to be the default tab.
$account = array(
'type' => MENU_LOCAL_TASK,
'page callback' => $edit['page callback'],
'page arguments' => $edit['page arguments'],
'access callback' => $edit['access callback'],
'access arguments' => $edit['access arguments'],
'module' => $edit['module'],
'file' => $edit['file'],
) + $account;
// Change the default action to take when hitting user/<UID>/edit to
// the content profile
$edit = array(
'page callback' => $profile['page callback'],
'page arguments' => $profile['page arguments'],
'access callback' => $profile['access callback'],
'access arguments' => $profile['access arguments'],
'file' => $profile['file'],
'file path' => $profile['file path'],
) + $edit;
// Specify the profile page as the default tab and remove settings
// already set above
$profile['type'] = MENU_DEFAULT_LOCAL_TASK;
unset($profile['page callback'],
$profile['page arguments'],
$profile['access callback'],
$profile['access arguments'],
$profile['file'],
$profile['file path']);
}
}
Редактировать 1 (для модуля профиля Core)
Я не осознавал, что вы хотите изменить вкладки по умолчанию в Редактировать .Это тот же общий принцип, который я описал ниже, но с некоторыми незначительными изменениями.В этом примере вместо вкладки учетной записи будет установлена вкладка Личная (на user/<UID>/edit/Personal
) по умолчанию:
function mymodule_menu_alter(&$items) {
// Specify the Edit Account page as just a regular tab.
// You do not need to change this block: this will always be the same as long
// as you don't want Edit account to be the default tab.
$items['user/%user_category/edit/account']['type'] = MENU_LOCAL_TASK;
$items['user/%user_category/edit/account']['page callback'] = $items['user/%user_category/edit']['page callback'];
$items['user/%user_category/edit/account']['page arguments'] = $items['user/%user_category/edit']['page arguments'];
$items['user/%user_category/edit/account']['access callback'] = $items['user/%user_category/edit']['access callback'];
$items['user/%user_category/edit/account']['access arguments'] = $items['user/%user_category/edit']['access arguments'];
$items['user/%user_category/edit/account']['module'] = $items['user/%user_category/edit']['module'];
$items['user/%user_category/edit/account']['file'] = $items['user/%user_category/edit']['file'];
// Change default action to take when hitting user/<UID>/edit to
// the settings of the page you want to use.
// -- Custom settings start here --
$items['user/%user_category/edit']['page callback'] = $items['user/%user_category/edit/Personal']['page callback'];
$items['user/%user_category/edit']['page arguments'] = $items['user/%user_category/edit/Personal']['page arguments'];
$items['user/%user_category/edit']['access callback'] = $items['user/%user_category/edit/Personal']['access callback'];
$items['user/%user_category/edit']['access arguments'] = $items['user/%user_category/edit/Personal']['access arguments'];
$items['user/%user_category/edit']['module'] = $items['user/%user_category/edit/Personal']['module'];
$items['user/%user_category/edit']['file'] = $items['user/%user_category/edit/Personal']['file'];
// When loading a profile tab, user_edit needs two parameters. The second parameter is the name of the profile
// (i.e. Personal from user/<UID>/edit/Personal).
$items['user/%user_category/edit']['page arguments'] = array(1, 'Personal');
// Specify the Personal page as the default tab and remove settings
// already set above */
$items['user/%user_category/edit/Personal']['type'] = MENU_DEFAULT_LOCAL_TASK;
unset($items['user/%user_category/edit/Personal']['page callback']);
unset($items['user/%user_category/edit/Personal']['page arguments']);
unset($items['user/%user_category/edit/Personal']['access callback']);
unset($items['user/%user_category/edit/Personal']['access arguments']);
unset($items['user/%user_category/edit/Personal']['module']);
unset($items['user/%user_category/edit/Personal']['file']);
}
Обзор и концепция
Вы можете сделатьэто с hook_menu_alter
и изменением типов для определенных вкладок.
Изменение вкладки по умолчанию - это немного мучительный процесс.По сути, вкладка по умолчанию наследует все свойства страницы без выбранных вкладок.Это позволяет пользователю перейти на user/UID
и получить страницу просмотра, не переходя непосредственно к user/UID/view
.
. Чтобы получить более ясное представление об этом, ознакомьтесь с user_menu()
реализация хука.Обратите внимание, что $items['user/%user/view']
довольно пусто, а $items['user/%user_uid_optional']
содержит все настройки, которые вы ожидаете увидеть в $items['user/%user/view']
.
Итак, вы сначала настроите вкладку вида, чтобы действоватькак обычная вкладка: для этого вам нужно будет скопировать все настройки, которые прикреплены к пункту меню user/UID
, и поместить их в пункт меню user/UID/view
.
Как только вы это сделаетечто вы собираетесь заменить настройки для user/UID
настройками для вкладки, которую вы хотите сделать вкладкой по умолчанию.
Наконец, вы собираетесь отменить все пункты меню для вкладки по умолчаниютак как он унаследует настройки для user/UID
.
Проверьте этот код, который делает вкладку Редактировать по умолчанию:
function mymodule_menu_alter(&$items) {
// Specify the View page as just a regular tab.
// You do not need to change this block: this will always be the same as long
// as you don't want View to be the default tab.
$items['user/%user/view']['type'] = MENU_LOCAL_TASK;
$items['user/%user/view']['page callback'] = $items['user/%user_uid_optional']['page callback'];
$items['user/%user/view']['page arguments'] = $items['user/%user_uid_optional']['page arguments'];
$items['user/%user/view']['access callback'] = $items['user/%user_uid_optional']['access callback'];
$items['user/%user/view']['access arguments'] = $items['user/%user_uid_optional']['access arguments'];
$items['user/%user/view']['file'] = $items['user/%user_uid_optional']['file'];
// Normal tabs don't have a weight
unset($items['user/%user/view']['weight']);
// Change default action to take when hitting user/<UID> to
// the settings of the page you want to use.
// -- Custom settings start here --
$items['user/%user_uid_optional']['page callback'] = $items['user/%user_category/edit']['page callback'];
$items['user/%user_uid_optional']['page arguments'] = $items['user/%user_category/edit']['page arguments'];
$items['user/%user_uid_optional']['access callback'] = $items['user/%user_category/edit']['access callback'];
$items['user/%user_uid_optional']['access arguments'] = $items['user/%user_category/edit']['access arguments'];
$items['user/%user_uid_optional']['file'] = $items['user/%user_category/edit']['file'];
// Specify the Edit page as the default tab and remove settings
// already set above
$items['user/%user_category/edit']['type'] = MENU_DEFAULT_LOCAL_TASK;
$items['user/%user_category/edit']['weight'] = -10;
unset($items['user/%user_category/edit']['page callback']);
unset($items['user/%user_category/edit']['page arguments']);
unset($items['user/%user_category/edit']['access callback']);
unset($items['user/%user_category/edit']['access arguments']);
unset($items['user/%user_category/edit']['file']);
}
Заменить вторую часть функциис настройками для вашего пункта меню, и вы должны быть в хорошей форме.Конечно, не забудьте очистить кеш после внесения любых изменений в меню, чтобы они вступили в силу.