You are here

6 钩子hook_user_login

admin 的头像
Submitted by admin on 星期四, 2015-06-25 09:38

作者:老葛,北京亚艾元软件有限责任公司,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);形式,这样在两种情况下都能正常工作。


Drupal版本: