Drupal 7でユーザープロフィールの項目をノード内に出力。
Drupal 7から標準で実装されたユーザープロフィールの項目を、ノードの投稿者情報に関連づけて出力する方法です。
一般的にユーザーアカウントの名前には英数字のみで構成されるので、それとは別に日本語での名前を、ユーザープロフィールに「field_name」として追加しています。
ユーザープロフィールを出力する一番簡単な方法は、ビューを使うことですが、今回はテーマに組み込む方法で出力を行います。
テーマに変更を加えるのは次の2つです。
- 「template.php」にpreprocess関数を追加
- 「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」ファイルを書き換え後は、「パフォーマンス」でキャッシュのクリアをしないと、うまく反映していないかもしれません。