Drupalで紹介プログラムを作成しています。ユーザーポイントをユーザーに付与する以外は、ほぼすべてが正しく機能しています。サイトを紹介した人が有料会員になったユーザーにポイントを付与したい。 Rules で何度か試しましたが、成功しませんでした。
私はこれらのモジュールを使用しています:
私が欲しいのは、ユーザーがサイトを参照する人がサイトの有料メンバーになると、ユーザーに自動的にユーザーポイントを与える Rules を使用してルールを作成することです。
ここで私を助けることができるより良い知識を持つ人?
参照するユーザーのuidを収集するフィールドをユーザー登録フォームに追加します。次に、現在のユーザーに、ユーザー登録フォームへのカスタムURLを使用して他のユーザーをサイトに招待するよう依頼します。このURLには、照会パラメーターとして参照ユーザーのuidを含める必要があります。ユーザー登録フォームをフックし、クエリパラメータに基づいて参照元のuidを入力します。リファラーフィールドは完全に非表示にする必要があります。次に、特定のuidが招待した有料ユーザーの数をデータベースでカウントします。各ユーザーに関するリファラーuidはカスタムユーザープロファイルフィールドに保持され、ユーザーが有料メンバーになった場合に状況に応じて有効になります。
これはあなたがあなた自身のコメントで書いたものの一部です(今の質問の下):
Event:ユーザーがメンバーになった後
条件:ユーザーが別のユーザーによって参照されました
Action:ユーザーにポイントを付与します(ここで問題が発生します...データセレクターから 'referring-user'が見つかりません)
機能のリクエストを参照してください(バグではありません...) " ルールアクション:参照ユーザーのフェッチ "。
紹介のルール統合には、これをネイティブに行う方法がありません。「referring_user」変数は、新しいアカウントが作成されているときにのみ存在します。参照するユーザーを取得できるルールアクションがあると非常に便利です。
この問題のステータスは「レビューが必要」であり、機能させるためのパッチがあります。
以下は、質問に部分的に回答するためにプロトタイプとして使用できる( Rules エクスポート形式)のルールです。
{ "rules_award_userpoints_to_referring_users" : {
"LABEL" : "Award userpoints to referring users",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules", "userpoints_rules", "referral" ],
"ON" : { "referral_recorded" : [] },
"DO" : [
{ "userpoints_action_grant_points" : {
"user" : [ "referring-user" ],
"points" : "50",
"tid" : "0",
"entity" : [ "new-user" ],
"description" : "You earned some points because user [referring-user:name] just registered using referral link [referring-user:referral-link].",
"operation" : "New referral occured",
"display" : "1",
"moderate" : "default"
}
}
]
}
}
50ポイントの(任意の)金額を選択しました。自分の要件に合わせて調整すると、新しいアカウントが作成されたときにこれらのポイントが(すでに)報われます(メンバーになることについての関係や依存関係はありません)。
ルールとユーザーポイントの統合には、利用できる機能がはるかに多いことに注意してください(そのため、このサンプルルールはプロトタイプとしてのみ検討しています)。
これらのモジュールを最初に有効にした場合(にも示されているように)、ルールUIを使用して上記の(エクスポートされた)ルールのインポートを実行できるはずです[〜#〜]要件[〜 #〜]上記のエクスポートされたルールのセクション):
ユーザーアカウントにエンティティ参照フィールドを追加する場合(エンティティタイプ=ユーザーの場合)、「参照元ユーザー」への参照を追加することで、パート2のルールアクションを置き換えることができます(まだそれらのユーザーポイントを付与していません)。
次に、「新しいメンバーシップを保存した後」などのイベントに基づいて追加のルールを作成できます(これは Membership Entity モジュールから取得されます)。また、そのルールにルール条件を追加して、membership-entity:type
に関するデータ比較を実行し、ユーザーポイントを付与するメンバーシップタイプと一致するかどうかを確認することもできます。
最後に、パート2のルールアクションと同様に、ルールアクションを使用してユーザーポイントを付与できますが、referring-user
(パート2のルールアクション内)は、指定されたユーザー参照を介して指定されたユーザーに置き換えられますユーザープロファイル。
Rules に慣れていない(十分/まだ)場合は、32(!!!)の無料の無料ビデオチュートリアル Learn the Rules framework をチェックしてください。
あなたの質問に従って、ユーザーにポイントを割り当てる以外のすべてを管理しました。次に、カスタムphpコードを実行するルールを作成することをお勧めします。ユーザーにポイントを割り当てるためのコードは次のとおりです。 (必要に応じて必要な変更を行ってください。)
$params = array(
'uid' => $user->uid,
'moderate' => 0,
'points' => 15,
'tid' => 0,
'entity_id' => $user->uid,
'entity_type' => 'user',
'operation' => 'Vote Added',
);
userpoints_userpointsapi($params);