web-dev-qa-db-ja.com

ノードを追加するときに現在のユーザーポイントをフィールドとして保存するにはどうすればよいですか?

私のウェブサイトの登録ユーザーは、「スタッフ」と呼ばれるコンテンツタイプからノードを作成できます。ここで、作成者がノードを作成したときに持っていたユーザーポイントを表示したいと思います。つまり、作成者のユーザーポイントが将来変更されたときに、値を更新しないでください。

どうやってやるの?コメントに対して同様のことを行うことはできますか?

これは、Display Suiteモジュールによって提供されるコード/動的/前処理フィールドで実行できますか?


Computed Field モジュールを使用するための@arpitrのヒントはかなり良い考えのようですが、彼の答えに答えたので、PHPについては何も知りません。次のコードを試しましたが、機能しません。

global $user;
$entity_field[0]['value'] = "userpoints_get_current_points($user->uid)";
1
Jeroen

コメントとノードに新しい整数フィールド「Userpoints」を追加することで、これを実現しました。その後、「新しいコメント/新しいコンテンツを保存した後」というイベントのルールを作成し、「データ値の設定」アクションを使用して「ユーザーポイント」フィールドの値を設定しました。

0
Jeroen

Stuffコンテンツタイプにもう1つのフィールドを追加し、 Computed Field module を使用してそのフィールドを追加するだけです。フィールドはコンテンツタイプにあるため、ユーザーポイントuserの値でノードを追加するときにその値が追加されます。それを作成している間、それは同じになるか、このフィールドのphpコード計算値に依存します。

計算フィールドは非常に強力なフィールドモジュールであり、コンテンツタイプにカスタムの「計算フィールド」を追加できます。これらの計算フィールドには、PHPコードを介して定義した値が入力されます。他のフィールド、現在のユーザー、データベーステーブルなど、Drupalで使用可能なものなら何でも利用できます。まだパワーがありますか?:))計算されたフィールド値を他のコンテンツフィールドと一緒にデータベースに保存するか、ノードビュー中にその場で「計算」するかを選択することもできます。 (ただし、ビューの使用にはデータベースに保存された値が必要であることに注意してください。)このフィールドは、文字通りスイスアーミーナイフのフィールドです。だからあなたのPHPベースの値を作り始めてください!

0
arpitr