老葛的Drupal培训班 Think in Drupal
模块可以使用hook_user('view')来向用户个人资料页面添加信息(例如,你在http://example.com/?q=user/1看到的;参看图6-1)

图6-1 用户个人资料页面,这里日志模块和用户模块通过实现hook_user('view')来向该页面添加额外信息
让我们看一下日志模块是如何向这一页面添加它的信息的:
/**
* Implementation of hook_user().
*/
function blog_user($op, &$edit, &$user) {
if ($op == 'view' && user_access('create blog entries', $user)) {
$user->content['summary']['blog'] = array(
'#type' => 'user_profile_item',
'#title' => t('Blog'),
'#value' => l(t('View recent blog entries'), "blog/$user->uid",
array('title' => t("Read @username's latest blog entries.",
array('@username' => $user->name)))),
'#attributes' => array('class' => 'blog'),
);
}
}
查看操作向$user->content中加入了一些信息.用户资料信息组织成类别,而每个类别表示一个页面,里面包含了关于用户的信息.在图6-1中,只有一个名为History的类别.外部的数组的键应该对应于类别名,在前面的例子中,键的名字为summary,它对应于History类别(诚然,如果键的名字与类别名相同的话,那么会更好一些).内部数组应该有一个唯一的文本键(在这里为blog),它有4个元素#type, #title, #value, 和 #attributes。类型user_profile_item的主题层对应于modules/user/user-profile-item.tpl.php。通过对比代码片断与图6-1,你可以看到这些元素是如何显示的。图6-2给出了$user->content数组的内容,它生成了如图6-1的页面。

图 6-2. $user->content的结构
你的模块还可以通过实现hook_profile_alter(),在个人资料项被主题化以前,来操作个人资料项。下面这个的例子,简单的从你的用户个人资料页面删除了日志项目。我们这里假定这个函数是模块hide.module中的:
/**
* Implementation of hook_profile_alter().
*/
function hide_profile_alter(&$account) {
unset($account->content['summary']['blog']);
}