2

ユーザー名であるユーザープロファイルページのタイトルを、後で追加された他のフィールドに置き換えようとしています。ページのタイトルとしてフルネームを表示しようとしています。

次のコードでpage.tpl.php $titleを編集しましたが、機能しません。

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

4 に答える 4

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を使用せずにでフィールドを追加することもできます。

于 2012-11-29T12:52:32.290 に答える
2

これを行うためのよりクリーンな方法:

function mymodule_page_alter() {  

  global $user;  

  if(drupal_get_title() === $user->name) {  
    drupal_set_title('New value');  
  }  
}
于 2013-05-23T15:28:34.033 に答える
2

この機能は、Entity APIモジュールのメタデータラッパーとhook_user_view()を使用してうまく実現できます。モジュールの.infoファイルのエンティティ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);
  }
}
于 2013-06-25T20:21:07.833 に答える
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);
 }
于 2012-11-30T06:50:17.647 に答える