作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
最后,让我们在这个模块中,再增加一个需求,那就是为用户增加一个真实姓名,当显示用户名字时,我们使用真实姓名来代替默认的username。
我们导航到admin/config/people/accounts,点击“管理字段”,进入页面,我们添加新的字段“真实姓名”。
接着点击保存按钮,在接下来的两个表单中,我们不做任何修改,直接保存即可。在Drupal7中,尽可能的使用字段的形式来扩充用户对象,而不是使用已经废弃的profile模块。Drupal7核心自带的profile模块仅仅是用来升级Drupal6,除此以外,再无别的用处,这个模块将在Drupal8中从核心中移出去。
完成这一准备工作以后,让我们向module文件中添加以下代码:
/**
* 实现钩子hook_username_alter().
*/
function class_teacher_username_alter(&$name, $account){
//debug($account);
$user = user_load($account->uid);
// 使用用户的真实姓名来代替默认的username.
if (isset($user->field_real_name['und'][0]['value'])) {
$name = $user->field_real_name['und'][0]['value'];
}
}
这样当我们访问我们的个人主页时,username就被替换为了现在的真实姓名,如图所示:
现在,对于钩子函数hook_username_alter(),我们就能够更好的理解它的用途了。