我们的会员列表中有某些用户附加了“供应商”角色。所有这些成员在登录时都会被重定向到某个页面。如何实现这一目标?
答案 0 :(得分:11)
给这只猫皮肤的方法不止一种...... 这是我首选的Drupal 7方法:
function hook_user_login(&$edit, $account) {
$edit['redirect'] = 'node/123';
}
答案 1 :(得分:6)
Drupal 7
行动 - > admin / config / system / actions - 重定向到网址
然后启用触发模块
触发器 - >的 /管理/结构/触发/节点强>
如果您尝试登录重定向,请按照此处(在页面中选择用户标签)
转到 - > 系统管理员/结构/触发/用户强>
然后 触发:用户登录后
选择一项操作 - > 重定向到网址 并分配。
然后清除缓存。
它会对你有用!
答案 2 :(得分:4)
您可以在Drupal中定义操作和触发器:
动作(系统管理员/设置/操作强>) - 重定向到特定页面
触发( admin / build / trigger / user ) - 用户登录后
试试这个。
创建一个小模块来检查用户的登录过程他有什么角色,然后在需要时重定向。 drupal_goto => drupal中的重定向功能
hook_user =>触发用户操作
对于用户的角色:
GLOBAL $user;
$roles = $user->roles;
$vendor = in_array('vendor', $roles);
$ vendor然后持有一个真/假值将决定是否重定向。
如果您不知道如何操作,请发布此处,我将为您编写模块。但这对于为您编写未来的drupa模块来说是一个很好的做法。 :)
答案 3 :(得分:4)
DRUPAL 7有两种方法
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;
}
}
答案 4 :(得分:4)
您可以使用Rules
事件:用户已登录。
条件:用户有角色
操作:页面重定向
答案 5 :(得分:2)
有些模块执行此操作(除了Trigger + Actions),例如LoginDestination:http://drupal.org/project/login_destination。这个Drupal forum post也有更多关于它的信息。
答案 6 :(得分:2)
hook_user的以下条件
if($op =='login') drupal_goto("your path");
答案 7 :(得分:1)
这可以通过使用content access和login toboggan模块的组合来实现。您将能够限制页面并提示用户登录以访问它们。
答案 8 :(得分: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']);
}
}