如何更改Drupal';s用户/foo/编辑为用户/foo/设置?

如何更改Drupal';s用户/foo/编辑为用户/foo/设置?,drupal,Drupal,对于我正在做的Drupal6站点,将“用户编辑”部分称为“设置”似乎比“编辑”更合适。我想做这个更改,URL应该是example.com/user/foo/settings。我在菜单和alter处理程序等方面做了很多工作,但还没有找到一个干净的方法。有吗?有什么建议吗(除了“不要这样做”)?谢谢 嗯,是的,首先想到的是不要这样做,特别是如果你是说取消“../edit”。您可以想象,其他模块(尤其是contrib模块)可能会在user/%/edit上运行,以生成它们的链接和内容 但如果你只是因为某

对于我正在做的Drupal6站点,将“用户编辑”部分称为“设置”似乎比“编辑”更合适。我想做这个更改,URL应该是example.com/user/foo/settings。我在菜单和alter处理程序等方面做了很多工作,但还没有找到一个干净的方法。有吗?有什么建议吗(除了“不要这样做”)?谢谢

嗯,是的,首先想到的是不要这样做,特别是如果你是说取消“../edit”。您可以想象,其他模块(尤其是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']);
}

嗨,吉姆,你对
hook\u menu
hook\u menu\u alter
的实验结果如何?您可以同时使用/user/foo/settings和/user/foo/edit吗?或者你想完全摆脱/user/foo/edit?我不得不承认我的实验结果很混乱。。。我能够让user/foo/settings大部分正常工作,但是在显示配置文件信息的不同部分的辅助菜单的选项卡周围存在问题。对于你的另一个问题,我可能更愿意让/edit消失,但可能会接受它(或者捕获它并将其重定向到/settings)?非常有用--谢谢!(是的,我选择了“保留/编辑版本…”但是,有一个问题——如果我像我一样有一些配置文件类别怎么办?我尝试添加一些行,比如--$items['user/%user\u category/settings/OtherCategory']=$items['user/%user\u category/edit/OtherCategory'];--与您显示的内容相同,但是类别选项卡没有显示在用户/123/设置页面上。但是,如果我转到/user/123/settings/OtherCategory,我确实会看到我定义的类别的选项卡,除了帐户。所以非常接近;有什么建议吗?嗯,这是另一个问题,我不太确定我是否理解,但如果您现在遇到了问题与未显示菜单选项卡相关,则很可能是其菜单项的类型未相应地设置为“菜单本地”任务或“菜单默认本地”任务。可能有更多信息(模块的粘贴或其他信息)我可能能够做出更好的猜测。非常感谢。在这一点上,实用主义已经占据了主导地位,我已经定义了page-user-settings.tpl.php,我正在(扼杀!)手工将主菜单和次菜单组合在一起。我需要定义更多的行,比如$items['user/%user\u category/settings/account']=$items['user/%user\u category/edit/account']对于其他二级,但它是有效的,也不太丑陋。是的,它是错误的/误导的/邪恶的,但它永远不会以一种真正的德鲁帕利式的方式扩展,我必须从这开始。至少我没有破解核心…:)
<?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;
}