Как изменить пользователя / foo / edit в Drupal на user / foo / settings? - PullRequest
0 голосов
/ 16 июля 2011

Для сайта Drupal 6, который я делаю, кажется более подходящим называть раздел «Редактирование пользователя» «Настройки», чем «Редактировать».Я хотел бы внести это изменение, вплоть до того момента, когда URL будет example.com/user/foo/settings.Я копался в обработчиках _menu и _menu_alter и тому подобном, но не нашел чистого способа сделать это.Есть один?Любой совет (кроме "не делай этого")?Спасибо!

1 Ответ

1 голос
/ 17 июля 2011

Ну, да, первое, что приходит на ум, это Не делай этого , особенно если ты имеешь в виду исключение "... / редактировать". Вы можете вообразить, что другие модули (особенно 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 * изначально), потому что если вы оставите их как локальные задач, затем вы увидите две вкладки «Редактировать» в профиле пользователя, меню администратора и т. д.

Очистите кеш и удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...