すべてのユーザーの日付フィールドを作成しました(Drupal 7)。この日付はユーザーのサブスクリプションの終了です。このフィールドの日付が過ぎると、メールを送信しますユーザーは、彼に再度購読できることを伝えます(私たちのウェブサイトにアクセスするため)。
だから、私は表示ルール(モジュールビュールール)を使用してビューを作成しました。フィールドの日付が空ではなく、日付のみが渡されるようにフィルターするすべてのユーザーをリストしました。このビューには2つのフィールド(ユーザー名と日付)があります。フィールド情報を編集して2つのフィールドを有効にしました(データタイプ:ユーザーおよびデータタイプ:日付):
その後、「Cronメンテナンスタスクが実行されました」というイベントに反応するルールを作成し、ビューの表示ルールにビューループを作成しました。ループでは、2つのアクションを追加しました。ビューからユーザーを終了するように日付値を変更し、このユーザーにメールを送信します。
Cronを起動しても何も起こりません。日付は変更されず、メールは送信されません。どの構成を忘れたかわかりません。アイデアはありますか?
助けてくれてありがとう.
エクスポート形式の私のルール:
{ "rules_relance_e_mail" : {
"LABEL" : "Relance e-mail",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"ON" : { "cron" : [] },
"DO" : [
{ "VIEW LOOP" : {
"VIEW" : "dates_de_relances",
"DISPLAY" : "views_rules_1",
"ROW VARIABLES" : {
"name" : { "name" : "Nom" },
"field_date_de_relance" : { "field_date_de_relance" : "Date de relance" }
},
"DO" : [
{ "data_set" : { "data" : [ "field-date-de-relance" ], "value" : "+1 year" } },
{ "mail" : {
"to" : [ "name:mail" ],
"subject" : "Test relance",
"message" : "Test mail",
"language" : [ "name:language" ]
}
}
]
}
}
]
}
}
ビューを調整する必要があります...メールを送信するユーザーごとに1つのビュー結果(行)があるようですが、問題ありません。ただし、そのビューには、ルールアクションで電子メールを作成するために使用するフィールドごとにフィールド(列)が必要です。したがって、[name:mail]
および[name:language]
をルールアクションで使用できるようにするには、ビューのいくつかの列で置き換える必要があります。そのためには、ビューで「関係」を「ユーザーオブジェクト」に追加する必要がある場合もあります(たとえば、電子メールIDが使用可能になるようにするため)。
詳細については、これらの回答をご覧ください。
更新した日付も保存するようにルールモジュールに通知する必要があるため、「エンティティを保存する」ために追加のルールアクションを追加する必要がある場合があります。