为系统路径创建别名

时间:2014-08-26 11:51:59

标签: drupal drupal-7

我听说有一种方法可以“以编程方式”为特定路径执行别名,以便我可以按照自己的意愿指定链接。假设我有这个链接的用户编辑页面:8082 / user / edit 我想要一个别名,以编程方式将用户从8082 / user / edit重定向到8082 / user / aboutus。

希望你早日来到这里。

2 个答案:

答案 0 :(得分:0)

启用pathauto模块后,您可以使用pathauto_create_alias 如果您想更改原始网址,可以使用HOOK_menu_alter

答案 1 :(得分:0)

由于这是一个系统路径,您可以使用hook_menu_alter覆盖与编辑页面关联的功能,并在自定义模块中添加一个新功能,以编程方式重定向到该用户“aboutus”页面。

如果你有一对一的重定向,使用重定向模块就可以了。但是如果你想将每个用户的编辑页面重定向到另一个动态页面,你需要替换hook_menu_alter中的原始函数

所以你要改变这个:

  $items['user/%user/edit'] = array(
    'title' => 'Edit',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('user_profile_form', 1),
    'access callback' => 'user_edit_access',
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
    'file' => 'user.pages.inc',
  ); 

并将页面回调替换为自定义函数

  $items['user/%user/edit'] = array(
    'title' => 'Edit',
    'page callback' => 'mymodule_redirect_user_edit',
    'type' => MENU_LOCAL_TASK,
  );

然后在您的自定义函数中,您可以使用drupal_goto以编程方式重定向

function mymodule_redirect_user_edit() {
  drupal_goto('user/' . arg(1) . '/aboutus'), array(), 301);
}