Drupal 7から標準で実装されたユーザープロフィールの項目を、ノードの投稿者情報に関連づけて出力する方法です。

一般的にユーザーアカウントの名前には英数字のみで構成されるので、それとは別に日本語での名前を、ユーザープロフィールに「field_name」として追加しています。
Drupal 7 User Profile
ユーザープロフィールを出力する一番簡単な方法は、ビューを使うことですが、今回はテーマに組み込む方法で出力を行います。

テーマに変更を加えるのは次の2つです。

  1. 「template.php」にpreprocess関数を追加
  2. 「node.tpl.php」にユーザープロフィール変数の出力コードを追加

テーマフォルダの中に含まれている「template.php」ファイルに、次のようにpreprocess関数を追加します。

1
2
3
4
5
6
<?php
function THEMENAME_preprocess_node(&$variables) {
	$value = db_query("SELECT field_name_value  FROM {field_data_field_name} where entity_id= :uid", array(':uid' =>$variables['uid']))->fetchField();
	$variables['alter_name'] = $value;
}
?>

関数名の「THEMENAME」の部分は、実際のテーマ名に置き換えます。
ここでは投稿者の「uid」からユーザープロフィール「field_name」を参照して、「node.tpl.php」に渡す変数の配列に値を追加しています。

次に「node.tpl.php」にて、上記で渡された変数を出力します。

1
<?php print $alter_name; ?>

「node.tpl.php」ファイルを書き換え後は、「パフォーマンス」でキャッシュのクリアをしないと、うまく反映していないかもしれません。