我正在尝试将用户个人资料页面的标题(即用户名)替换为稍后添加的其他字段。试图将全名显示为页面标题。
我使用以下代码编辑了 page.tpl.php $ title,但它不起作用。
if(arg(0)=="user")
{
$title=$field_user_last_name;
}
答案 0 :(得分:2)
安装RealName模块并转到/admin/config/people/realname
以更改用户名称所用的模式。
我正在使用Profile2添加名字和姓氏字段以及以下模式:
[user:profile-person:field_first_name] [user:profile-person:field_last_name]
但你可以在/admin/config/people/accounts/fields
添加字段而不使用Profile2。
答案 1 :(得分:2)
更简洁的方法:
function mymodule_page_alter() {
global $user;
if(drupal_get_title() === $user->name) {
drupal_set_title('New value');
}
}
答案 2 :(得分:2)
您可以使用Entity API模块的元数据包装器和hook_user_view()很好地完成此功能。在模块的.info文件中为Entity API添加依赖项,然后代码可能如下所示(假设您要将标题设置为用户的全名,并且您有名为field_first_name和field_last_name的字段):
/**
* Implements hook_user_view().
*/
function MYMODULE_user_view($account, $view_mode, $langcode) {
// Set the page title of the user profile page to the user's full name.
$wrapper = entity_metadata_wrapper('user', $account);
$first_name = $wrapper->field_first_name->value();
$last_name = $wrapper->field_last_name->value();
if ($first_name && $last_name) {
drupal_set_title($first_name . ' ' . $last_name);
}
}
答案 3 :(得分:0)
我得到了解决方案!!!
我在template.php上的 preprocess_page 函数中添加了以下代码
if(isset($variables['page']['content']['system_main']['field_name'])){
$title=$variables['page']['content']['system_main']['field_name']['#object']->field_name['und'][0]['value'];
drupal_set_title($title);
}