如何在用户页面中执行请求目标

时间:2009-06-26 16:02:12

标签: drupal hook

我正在尝试重定向任何已记录的用户尝试访问/ user。

在我的模块中,登录后重定向的下一个代码:

function ccmm_user($op, &$edit, &$account, &$category = NULL)
{
    switch($op){
        case 'login':
            $_REQUEST['destination'] = 'admin/';
            break;
    }
}

这很有效。然后我尝试使用 case'view':但它没用。

4 个答案:

答案 0 :(得分:1)

听起来您希望用户永远无法访问/ user页面,无论是登录还是手动访问。

在这种情况下,您应该在hook_init函数中进行简单的检查,如下所示:

function ccmm_init() {
  if ( $_REQUEST['q'] == '/user' ) {
    drupal_goto('/admin'); // Or where ever you want to send them
  }
}

当然你应该做很多检查,你可能想看一下使用Global Redirect模块,不要担心它只有8k大小所以关于添加另一个模块的问题不是在这种情况下这样的问题。

答案 1 :(得分:0)

您可以尝试Login Destination module而不是编写自己的代码。

答案 2 :(得分:0)

如果您不熟悉Login Toboggan模块,那么您应该是。

答案 3 :(得分:0)

更好的方法是在模块中使用hook_menu_alter删除/user/%user_uid_optional的菜单条目,或将其移至其他网址。

这样你不仅可以处理登录(就像你现在这样),而且可以访问/ user /(警告:包括管理员用户的那些)。或者您可以使用相同的挂钩来修改访问权限检查,并仅将其授予具有更高权限的用户,例如administer users