我为Drupal 7制作了一个自定义模块,它可以处理用户数据(拥有自己的数据库表和使用这些数据做逻辑的类)。我想在用户的个人资料中显示它们,但我不想使用drupal字段等(我不需要另一个db表来存储数据)..
简单地说,在每个用户配置文件中我需要从我的模块中实例化新类(例如新的UserDataPresenter($ user_id)),在配置文件本身上我需要“注入”(?)一些html / php数据,例如:< / p>
<?php $user = new UserDataPresenter($user_id); ?>
e.g. <b>User's apples: <?php echo $user->getUserApples() ?>
etc...
这将显示在用户个人资料的顶部,如下所示:
Drupal 7中是否可以(没有任何外部模块)
我只想在每个用户的个人资料页面上显示用户相关数据 - 就是这样!没什么。
感谢您的回答。
答案 0 :(得分:1)
你可以使用钩子hook_user_view_alter()
function MYMODULE_user_view_alter(&$build) {
$build['#post_render'][] = 'MYMODULE_user_post_render';
}
function MYMODULE_user_post_render($arg1, $form) {
$user_id = $form['#account']->uid ;
$user = new UserDataPresenter($user_id);
return "<b>User's apples: ".$user->getUserApples() ;
}
修改您可以直接在#post_render
数组中添加条目,而不是使用$build
:
function MYMODULE_user_view_alter(&$build) {
$uid = $build['#account']->uid;
$user = new UserDataPresenter($uid);
$build['my_html'] = [
'#markup' => '<b>User\'s apples: '.$user->getUserApples().'</b>',
'#weight' => 99,
] ;
}
然后使用#weight
将标记放在您想要的位置。