Ну, да, первое, что приходит на ум, это Не делай этого , особенно если ты имеешь в виду исключение "... / редактировать". Вы можете вообразить, что другие модули (особенно contrib) могут использовать user /% / edit для генерации своих ссылок и прочего.
Но если вам просто нужно сделать это по какой-то причине, тогда это должно быть что-то вроде:
<?php
/**
* Implementation of hook_menu_alter().
*/
function MYMODULE_menu_alter(&$items) {
$items['user/%user_category/settings'] = $items['user/%user_category/edit'];
$items['user/%user_category/settings']['title'] = 'Settings';
$items['user/%user_category/settings/account'] = $items['user/%user_category/edit/account'];
unset($items['user/%user_category/edit'], $items['user/%user_category/edit/account']);
}
Это по существу исключит исходные обратные вызовы "/ edit".
Лучшим вариантом (поскольку, как я уже сказал, другие модули / темы / и т. Д., Которые вы устанавливаете в будущем, может предполагать существование URL-адресов "... / edit"), было бы иметь оба, с новым просто копия оригинала:
<?php
function MYMODULE_menu_alter(&$items) {
$items['user/%user_category/settings'] = $items['user/%user_category/edit'];
$items['user/%user_category/settings']['title'] = 'Settings';
$items['user/%user_category/settings/account'] = $items['user/%user_category/edit/account'];
$items['user/%user_category/edit']['type'] = MENU_CALLBACK;
$items['user/%user_category/edit/account']['type'] = MENU_CALLBACK;
}
Обратите внимание, что я изменил тип оригинальных"... / edit" элементов на * MENU_CALLBACK * (они * MENU_LOCAL_TASK * и * MENU_DEFAULT_LOCAL_TASK * изначально), потому что если вы оставите их как локальные задач, затем вы увидите две вкладки «Редактировать» в профиле пользователя, меню администратора и т. д.
Очистите кеш и удачи!