私はdrupalで私の最初のサイトを構築しています。私はカスタムユーザーフィールドを作った:フルネーム。 今このテンプレートの値を "Hello、%username%"と言うテンプレートに入れたいと思っています。 どうすればいいですか?Drupal 7テンプレートのカスタムユーザーフィールドの値を取得しますか?
答えて
セットアップ/フィールド名、(テンプレートファイルの前処理機能)template.php
でこのような何かによって:
function mytheme_preprocess_page() {
global $user;
$user = user_load($user->uid); // Make sure the user object is fully loaded
$vars['full_name'] = $user->field_full_name[LANGUAGE_NONE][0]['value'];
}
その後page.tpl.php
でこのような何か:
if (isset($full_name) && !empty($full_name)) :
echo 'Hello ' . $full_name;
endif;
なおLANGUAGE_NONE
多言語サイトを運営している場合は変更する必要があります。
フィールドの値を取得するには、field_get_items
を使用する以外は、クライブの答えが正しいです。それはあなたのための言語を処理します。また、その値をサニタイズする必要があります。
function THEME_preprocess_page() {
global $user;
$user = user_load($user->uid); // Make sure the user object is fully loaded
$full_names = field_get_items('user', $user, 'field_full_name');
if ($full_names) {
$vars['full_name'] = check_plain($full_names[0]['value']);
}
}
サイトがEntity APIモジュールを使用している場合、あなたもこの
function THEME_preprocess_page() {
global $user;
$user = user_load($user->uid); // Make sure the user object is fully loaded
$wrapper = entity_metadata_wrapper('user', $user);
$vars['full_name'] = $wrapper->field_full_name->get(0)->value(array('sanitize' => TRUE));
}
のようなエンティティのメタデータラッパーを使用することができますが、私はこの質問はかなり長い間前に頼まれた知ってもWriting robust code that uses fields, in Drupal 7
を参照してください。私は代替案を投稿したかったのです。あなたがfield_real_name
と呼んだカスタムフィールドに持っているものに$variables['name']
という$ variables配列のフィールドを変更したいようです。前処理機能を使用している場合は、グローバル$user
オブジェクトをプルする必要はありません。あなたはこれでユーザー情報を得ることができるので、あなたは、$variables
配列へのアクセス権を持っている - それは、UID(see template_preprocess_username)に関連した情報をロードします:あなたdpm($account)
(またはkpr($account)
場合は、使用していない場合
function mythemename_preprocess_username(&$variables) {
$account = user_load($variables['account']->uid);
...more code will go here in a moment
}
をdevel)を使用すると、グローバル$user
オブジェクトを使用せずにすべてのユーザー情報にアクセスできることがわかります。
その後、あなたは次のようにあなたのfield_real_name
する$variables['name']
の出力を変更することができます。
function mythemename_preprocess_username(&$variables) {
// Load user information with user fields
$account = user_load($variables['account']->uid);
// See if user has real_name set, if so use that as the name instead
$real_name = $account->field_real_name[LANGUAGE_NONE][0]['safe_value'];
if (isset($real_name)) {
$variables['name'] = $real_name;
}
}
私たちは、テンプレートファイル内の任意の場所に以下のコードを追加することができます。
<?php
global $user;
$user = user_load($user->uid);
print $user->name;
?>
- 1. Liferayでのカスタムユーザーフィールド値の取得(expando)
- 2. drupal 7カスタムコンテンツタイプとテンプレート
- 3. 用語参照のフィールド値をプログラムで取得する(Drupal 7)
- 4. テンプレートのload_nodeのDrupal 7のフィールド値へのアクセス
- 5. Drupal 7のための別のテンプレート
- 6. Drupal 7:テーマの表示 - 特定のフィールドを番号で取得しますか?
- 7. Drupal 7画像フィールドパスを取得
- 8. drupalでテンプレートを変換する7
- 9. Drupal 7でテンプレートを使わずにDrupalページを表示する
- 10. ブロックテンプレート内のノードIDをDrupal 7で取得する
- 11. ビュー3のデフォルト値をdrupal 7に設定します。
- 12. drupal 7を使用しますか?
- 13. Drupal 7 autocomplete_path関数は隠し値を返します
- 14. Drupalの7:ラジオボタンの値は、API
- 15. Drupal。テンプレートでフィルタリングされたノードを取得する
- 16. Drupalの/ PHP - 配列内の特定の値を取得します
- 17. Drupal 7のバックポートDrupal 7 admin-barとoverlay?
- 18. document.readyの後のテンプレートで選択した値を取得する
- 19. Drupal 7 - node_load()で参照されるエンティティを取得する
- 20. drupal 7:アカウント作成に関するユーザー情報を取得
- 21. Drupal 8テンプレートのuriから画像URLを取得する方法
- 22. JS Fullcalendar Drupal 7:イベントをクリックして詳細を取得できません
- 23. Drupal 7 date_popup timepickerのみデフォルト値
- 24. Meteor.Callを取得してテンプレートの値を返す方法は?
- 25. Drupal 7:指定されたノードタイプのすべての有効なフィールドを取得しますか?
- 26. Drupal 7フィールド複数の値を削除して表示する
- 27. drupal 6からdrupal 7への移行
- 28. Drupal 6からDrupal 7へのアップグレード
- 29. Drupal 7のカスタムページ表示テンプレートを使用してノードフィールドを表示する
- 30. 次のノードを取得する/現在の著者の記事 - Drupal 7
field_get_itemsを使用してください。ダイレクトアクセスでは、多言語のWebサイトやフィールドの構造が変更された場合でも中断する可能性があります。 – gagarine
@ gagarineこれは長く、ずっと前です。フィールド構造はFYIを変更することはできません。そのためのメカニズムはありません。 – Clive
これはテンプレートまたはモジュール内でのみ機能しますか? '$ account = user_load($ uid);'でユーザを読み込むと、カスタムフィールドの代わりに空の配列しか得られません: '$ account-> pwyw_balance'は内容のない配列()です。カスタムフィールドに余分なコードをロードする必要がありますか? '$ wrapper = entity_metadata_wrapper( 'user'、$ account) - > value()'を使ってユーザーを読み込むと、同じことが起こります。 '$ wrapper ['pwyw_balance']'は空の配列です。 – nerdoc