作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
我们现在想要在用户的主页显示班级信息,这样用户登录进来就能看到自己的班级。向module文件中添加以下代码:
/**
* 实现钩子hook_user_view().
*/
function class_teacher_user_view($account, $view_mode, $langcode){
//如果用户具有创建班级节点的权限,在这里也就是用户的角色为班主任
if (user_access('create banji content', $account)) {
//drupal_set_message('123456');
//首先是读取用户创建的班级节点。
$node = db_select('node', 'n')
->fields('n')
->condition('n.uid', $account->uid)
->condition('n.type','banji')
->execute()
->fetchObject();
//根据节点是否存在,为$markup赋值。
$markup = "";
if(!empty($node)){
$markup = l($node->title, "node/$node->nid", array('attributes' => array('target' => '_blank')));
}else{
$markup = l(t('添加班级'), "node/add/banji", array('attributes' => array('target' => '_blank')));
}
//添加有关班级的信息,注意这里的信息类型为user_profile_item
$account->content['summary']['banji'] = array(
'#type' => 'user_profile_item',
'#title' => t('班级'),
'#markup' => $markup,
'#attributes' => array('class' => array('banji')),
);
}
}
上面的代码中,有详细的中文注释,这里就不再过多解释了,需要注意的是'create banji content'这个权限,我是通过查询数据库最后才确认的,中间是内容类型的机读名字。我们向用户帐户的内容里面,添加了有关班级的信息。这里还需要注意的是信息的结构是一个关联数组,我们这里用到了它的四个键'#type'、'#title'、'#markup'、'#attributes'。user_profile_item类型的输出,由modules\user下面的user-profile-item.tpl.php模板文件负责。