このシナリオでは、ユーザーは30日ごとに特定のコンテンツタイプの1つのノードを投稿できます(ユーザーの役割に応じて間隔が変わります)。これを実現するためにnode_limitを使用しています。それはルールとは関係ありません。
したがって、アイデアは、30日後にユーザーに新しい記事を投稿するよう通知する電子メールをスケジュールし、ユーザーのアカウントのフィールドを更新して、ユーザーが最後に投稿した時刻を表示することです。ノードが保存されると、ルールはユーザーフィールドをノードの投稿日で更新する必要があります。
しかし、データ値の設定を正しく構成できません。
私が作成したルールは次のとおりです。
プロパティごとにエンティティを取得パラメータ:エンティティタイプ:ユーザー、プロパティ:press_update_last_posted、値:[node:created]変数を提供:日付(entity_fetched_pressupdatelastposted)
データ値を設定パラメータ:データ:[エンティティフェッチ] ...、値:[エンティティフェッチ] ...
そしてもちろん、スケジュールされた電子メールを起動して、サイトにメッセージを表示します。
助言がありますか?
以下の3つのステップで説明するように、_ Rules モジュールをRules Scheduler
(そのサブモジュール)とともに使用します。これらのステップはこれらの仮定に基づいています:
この場合、ユーザープロファイルに日付フィールドが追加されるので、ユーザーごとに「次の記事」の適切な日付を示すことができます。
マシン名(たとえば)field_next_article
を使用して、「user」エンティティにフィールドを追加します。 1つの日付のみを許可します(「次の」記事が許可されるときに保管するため)。
作成するルールComponentは次のとおりです(ルールエクスポート形式で、コピーと貼り付けを介して独自の環境にインポートするだけです):
{ "rules_send_email_notification" : {
"LABEL" : "Send eMail notification",
"PLUGIN" : "action set",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"USES VARIABLES" : { "user_to_notify" : { "label" : "User to be notified", "type" : "user" } },
"ACTION SET" : [
{ "mail" : {
"to" : [ "user-to-notify:mail" ],
"subject" : "Friendly reminder about your next article",
"message" : "This is a reminder about your next article on [user-to-notify:field_next_article] ...",
"from" : "[site:mail]",
"language" : [ "" ]
}
}
]
}
}
明らかに、Subjectおよびメールの内容はレビュー/チューニングが必要な場合がありますが、他のを使用することもできますFrom電子メールID。
作成するRuleを Rules エクスポート形式で示します(コピーして貼り付けて独自の環境にインポートするだけです)。 :
{ "rules_user_reminder_after_30_days" : {
"LABEL" : "User Reminder After 30 Days",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules", "rules_scheduler" ],
"ON" : { "user_login" : [], "node_insert--article" : { "bundle" : "article" } },
"IF" : [
{ "entity_has_field" : { "entity" : [ "account" ], "field" : "field_next_article" } }
],
"DO" : [
{ "schedule_delete" : {
"component" : "rules_send_email_notification",
"task" : "[account:name]"
}
},
{ "data_set" : { "data" : [ "account:field-next-article" ], "value" : "+30 day" } },
{ "schedule" : {
"component" : "rules_send_email_notification",
"date" : {
"select" : "account:field-next-article",
"date_offset" : { "value" : 2592000 }
},
"identifier" : "[account:name]",
"param_user_to_notify" : [ "account" ]
}
}
]
}}
上記のルールは、前のステップのRules Componentを参照していることに注意してください。
このルールの一部であるschedule_delete
は、データフィールドを更新するときに、以前に「スケジュールされた」リマインダーが確実に削除されるようにするためです(これにより、リマインダーが1つだけトリガーされ、最新の日付でトリガーされます)。