Drupal 7 - 如何使用添加的自定义字段更改用户个人资料页面上的页面标题?

时间:2012-11-29 12:39:33

标签: drupal drupal-7

我正在尝试将用户个人资料页面的标题(即用户名)替换为稍后添加的其他字段。试图将全名显示为页面标题。

我使用以下代码编辑了 page.tpl.php $ title,但它不起作用。

if(arg(0)=="user") 
{
   $title=$field_user_last_name;
}

4 个答案:

答案 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);
 }