ユーザー名であるユーザープロファイルページのタイトルを、後で追加された他のフィールドに置き換えようとしています。ページのタイトルとしてフルネームを表示しようとしています。
次のコードでpage.tpl.php $titleを編集しましたが、機能しません。
if(arg(0)=="user")
{
$title=$field_user_last_name;
}
RealNameモジュールをインストールし、に移動し/admin/config/people/realname
て、ユーザーの名前に使用されるパターンを変更します。
Profile2を使用して、名前と名前のフィールドと次のパターンを追加しています。
[user:profile-person:field_first_name] [user:profile-person:field_last_name]
/admin/config/people/accounts/fields
ただし、 Profile2を使用せずにでフィールドを追加することもできます。
これを行うためのよりクリーンな方法:
function mymodule_page_alter() {
global $user;
if(drupal_get_title() === $user->name) {
drupal_set_title('New value');
}
}
この機能は、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);
}
}
私は解決策を得ました!!!
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);
}