web-dev-qa-db-ja.com

日付が渡されたときにビュールールを持つユーザーにメールを送信する方法

すべてのユーザーの日付フィールドを作成しました(Drupal 7)。この日付はユーザーのサブスクリプションの終了です。このフィールドの日付が過ぎると、メールを送信しますユーザーは、彼に再度購読できることを伝えます(私たちのウェブサイトにアクセスするため)。

だから、私は表示ルール(モジュールビュールール)を使用してビューを作成しました。フィールドの日付が空ではなく、日付のみが渡されるようにフィルターするすべてのユーザーをリストしました。このビューには2つのフィールド(ユーザー名と日付)があります。フィールド情報を編集して2つのフィールドを有効にしました(データタイプ:ユーザーおよびデータタイプ:日付):

enter image description here

その後、「Cronメンテナンスタスクが実行されました」というイベントに反応するルールを作成し、ビューの表示ルールにビューループを作成しました。ループでは、2つのアクションを追加しました。ビューからユーザーを終了するように日付値を変更し、このユーザーにメールを送信します。

enter image description here

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" ]
          }
        }
      ]
    }
   }
  ]
 }
}
3
David CKW

パート1:メールの送信

ビューを調整する必要があります...メールを送信するユーザーごとに1つのビュー結果(行)があるようですが、問題ありません。ただし、そのビューには、ルールアクションで電子メールを作成するために使用するフィールドごとにフィールド(列)が必要です。したがって、[name:mail]および[name:language]をルールアクションで使用できるようにするには、ビューのいくつかの列で置き換える必要があります。そのためには、ビューで「関係」を「ユーザーオブジェクト」に追加する必要がある場合もあります(たとえば、電子メールIDが使用可能になるようにするため)。

詳細については、これらの回答をご覧ください。

パート2:変更された日付の保存

更新した日付も保存するようにルールモジュールに通知する必要があるため、「エンティティを保存する」ために追加のルールアクションを追加する必要がある場合があります。

1
Pierre.Vriens