7

我们的成员列表中有某些用户附加了角色“供应商”。所有此类成员在登录时都将被重定向到某个页面。如何实现?

4

9 回答 9

11

给这只猫剥皮的方法不止一种……这是我首选的 Drupal 7 方法:

function hook_user_login(&$edit, $account) {
  $edit['redirect'] = 'node/123';
}
于 2012-11-23T15:01:51.787 回答
6

对于 Drupal 7

操作 --> admin/config/system/actions - 重定向到 URL

然后启用您的触发模块

触发器 --> /admin/structure/trigger/node

如果您尝试登录重定向,请按照此操作(在页面中选择用户选项卡)

转到 -->管理员/结构/触发器/用户

然后 触发:用户登录后

选择一个操作 -->重定向到 URL并分配。

然后清除缓存。

它会为你工作!

于 2013-06-10T13:43:17.257 回答
4

您可以在 Drupal 中定义操作和触发器:

Action( admin/settings/actions ) -重定向到特定页面

触发器 ( admin/build/trigger/user ) -用户登录后

试试这个。

编辑(见评论):

创建一个小模块来检查用户的登录过程他拥有什么角色,然后在必要时重定向。 drupal_goto => drupal 中的重定向功能

hook_user => 触发用户操作

对于用户的角色:

GLOBAL $user;
$roles = $user->roles;
$vendor = in_array('vendor', $roles);

$vendor 然后持有一个真/假值将决定是否重定向。

如果您不知道如何执行此操作,请在此处发布,我会为您编写模块。但这可能是为您编写未来的德鲁巴模块的好习惯。:)

于 2010-08-07T11:17:03.750 回答
4

DRUPAL 7 中有 2 种方式

1)使用动作和触发器看到这个http://drupal.org/node/298506

2)如果使用自定义模块

function YOURMODULE_user_login(&$edit, $account) {

 if (!isset($_POST['form_id']) || $_POST['form_id'] != 'user_pass_reset' || variable_get('login_destination_immediate_redirect', FALSE)) {

 if(in_array('THE-ROLE-WANTED-TO-REDIRECT',$account->roles)): 

drupal_goto('PATH');

 else: drupal_goto('user/'.$account->uid); 

endif; 

} 

}
于 2012-03-02T06:59:08.790 回答
4

您可以使用规则

事件:用户已登录。
条件:用户具有角色
操作:页面重定向

于 2012-05-24T12:54:24.597 回答
2

有执行此操作的模块(除了 Trigger+Actions),例如 LoginDestination:http ://drupal.org/project/login_destination 。这个Drupal 论坛帖子也有更多关于它的信息。

于 2010-08-07T16:50:45.003 回答
2

hook_user 的以下条件

if($op =='login') drupal_goto("your path");
于 2012-09-07T06:17:30.677 回答
1

这可以通过结合使用内容访问登录雪橇模块来实现。您将能够限制页面并提示用户登录以访问它们。

于 2016-06-23T14:23:23.663 回答
1

首先在表单预处理中设置条件(例如,我只想重定向在节点页面使用表单登录的用户)

function YOURMODULE_form_user_login_alter(&$form, &$form_state, $form_id)
{
    $pathArguments = explode('/', current_path());
    if (count($pathArguments) == 2 && $pathArguments[0] === 'node' && is_numeric($pathArguments[1])) {
        $form_state['nodepath'] = current_path();
    }

}

比定义重定向:

function YOURMODULE_user_login(&$edit, $account)
{
    if (isset($edit['nodepath']) && !empty($edit['nodepath'])) {
        drupal_goto($edit['nodepath']);
    }
}
于 2019-06-20T18:58:29.947 回答