You are here

5 钩子hook_user_view

admin 的头像
Submitted by admin on 星期三, 2015-06-24 10:00

作者:老葛,北京亚艾元软件有限责任公司,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模板文件负责。


Drupal版本: