1

プロファイルモジュールを使用して、ユーザーが登録時に入力するprofile_real_nameというテキストフィールドを作成しました。node.tpl.phpでこの変数にアクセスするにはどうすればよいですか?

この関数を使用してユーザー変数を出力しましたが、 profile_real_namedsm($user)のデータを除くすべてが含まれていました

また、を実行dsm($vars)したところ、phptemplate_preprocess_user_profile必要な情報が含まれているaccountというオブジェクトが含まれていることがわかりましたが、このオブジェクトは$user変数では使用できません。

どうもありがとう

4

3 に答える 3

3

node.tpl.php内の作成者のプロファイル情報にアクセスする場合は、user_profile関数ではなくphptemplate_preprocess_node関数を使用する必要があります。ただし、ノードの前処理関数にはデフォルトで$ accountオブジェクトがないため、次の場所にロードする必要があります。

これは、template.phpファイルのphptemplate_preprocess_node関数に含まれます。

if ($vars['uid']) {
  $vars['account'] = user_load(array('uid' => $vars['uid']));
}

そうすれば、node.tpl.phpで作成者のプロファイル値にアクセスできるようになります。あなたが具体的に尋ねた価値は次のようになります:

print($account->profile_real_name);

ただし、ノードの作成者の名前をアカウント名ではなくprofile_real_name値として表示したい場合はどうでしょうか。

その場合、はるかに効率的な方法は、theme_username関数をオーバーライドすることです。

それはあなたが直接質問したことではないので、ここでは説明しませんが、drupal.orgフォーラムのこの投稿は、Drupal 5または6を開始するのに最適な場所です:http: //drupal.org/node/122303 #comment-204277

于 2010-02-19T19:30:21.473 に答える
1

$accountこれは、グローバルユーザーを誤って上書きして、そのユーザーがそのユーザーとしてログインすることを回避するために、通常、グローバルユーザーではないユーザーと呼ぶものです。

少しチェックしましたが、問題を解決する最も簡単な方法は、テンプレートで$userの代わりに$accountを使用することです。

テンプレートで使用$userしたり、WmasterJが示唆するように実行したりするのは誤りです。間違ったデータを投稿します。プロファイルが監視されているユーザーのデータではなく、ログインしたユーザーのデータを投稿します。このバグは、自分のプロファイル以外のすべてのユーザーのプロファイルを表示したときに発生します。

前処理関数を作成するのは難しくありません。テーマのtemplate.phpファイルでphptemplate、コードを定義したテーマの名前に置き換えるだけです。この場合、必要なものがすでにあるので、前処理機能を変更する必要はありません。

于 2010-02-17T20:45:31.687 に答える
0

たとえばuser-profile.tpl.php内でこれを実行する場合、必要なすべての情報が$account配列内に存在します。

それ以外の場合は、IDに基づいてユーザーオブジェクトをロードすることでユーザーデータにアクセスできます(つまり、現在ログインしている人のID、またはDBにクエリを実行してuidその方法を取得できる場合)。

まずuid、現在のユーザーのを取得します。

$uid = $user->uid;

次に、ユーザーオブジェクトをロードします。

// Create user objets based on uid ()
$user_obj = user_load($user->uid);

次に、そのユーザーのプロファイル変数をロードします。

// Load profile
profile_load_profile($user_obj);

これで、$user_obj変数(参照によって渡されるprofile_load_profile)には、次のようにアクセスできるプロファイル情報を持つオブジェクトが含まれます。

$user_obj->profile_real_name

それが役に立てば幸い!

于 2010-02-17T20:40:21.073 に答える