作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
接下来,让我们看一下,当用户登录时,检查他是否创建了班级节点,如果没有创建,提示它创建,如果创建了但是信息不完善,提示他完善班级的资料信息。向module文件中添加以下代码:
/**
* 实现钩子hook_user_login().
*/
function class_teacher_user_login(&$edit, $account){
//首先是读取用户创建的班级节点。
$node = db_select('node', 'n')
->fields('n')
->condition('n.uid', $account->uid)
->condition('n.type','banji')
->execute()
->fetchObject();
if(!empty($node)){
//这里假定节点的默认语言为en,我们以body字段为判断依据,可根据实际调整
//debug($node);
$node = node_load($node->nid);
if(empty($node->body['en'][0]['value'])){
drupal_set_message(t('请完善班级信息'));
//重定向到节点的编辑页面
//drupal_goto('node/'.$node->nid.'/edit');
$url = url('node/'.$node->nid.'/edit');
header('Location: ' . $url);
exit();
}
}else{
drupal_set_message(t('请添加班级信息'));
//重定向到节点的创建页面
//drupal_goto('node/add/banji');
$url = url('node/add/banji');
header('Location: ' . $url);
exit();
}
}
在上面的代码中,我最初使用drupal_goto来进行重定向,在这种情况下,在用户登录页面登录时,可以正常工作,但是如果使用了登录表单区块,重定向就存在问题了,此时将其修改为了原始的header('Location: ' . $url);形式,这样在两种情况下都能正常工作。