web-dev-qa-db-ja.com

投票終了日の前に管理者に電子メール通知を送信します

私は Advanced Poll モジュールを使用していますが、これには素敵な「時間管理」機能があります。投票を開始または終了するタイミングをスケジュールできます。

投票締め切り日の1日前に管理者に電子メール通知を送信したい。そのため、管理者は通知を受け取り、別の投票を作成します。

Rules モジュールまたはフックでこれを可能にする方法はありますか?

2

コンポーネントの評価をスケジュールする(メールを送信する)ルールを作成する必要があります。

コンポーネントを作成

  1. タイプルール(admin/config/workflow/rules/components/add)のコンポーネントプラグインを作成します-それに名前を付けますポーリングの終了について管理者に通知します "。
  2. 動作するコンポーネントの変数を提供します。変数Data type = ContentLabel - Poll NodeMachine name = poll_nodeUsage = Parameter

screenshot

  1. 必要に応じて条件を追加します
  2. アクションの追加-> HTML電子メールの送信。メールパラメータを設定します以下はコンポーネントのエクスポートです

    { "rules_notify_admin_about_poll_closure" : {
        "LABEL" : "Notify admin about poll closure",
        "PLUGIN" : "rule",
        "OWNER" : "rules",
        "REQUIRES" : [ "rules_i18n", "rules", "mimemail" ],
        "USES VARIABLES" : { "poll_node" : { "label" : "Poll Node", "type" : "node" } },
        "DO" : [
          { "mimemail" : {
              "key" : "poll_closure_notify_admin",
              "to" : "[email protected]",
              "subject" : "Poll will close tomorrow",
              "body" : "Poll [poll-node:title] will close tomorrow",
              "plaintext" : [ "" ],
              "language" : [ "" ]
            }
          }
        ]
      }
    }  
    

ルールを作成

  1. イベントに反応:「After saving new content of type Advanced Poll」、「After updating existing content of type Advanced Poll
  2. 条件の追加 "エンティティにフィールドがあります":エンティティ:node、フィールド:advpoll_dates
  3. アクションを追加します "コンポーネントの評価をスケジュールします"-作成したコンポーネントを選択します "ポーリングの終了について管理者に通知します "。

    評価予定日-> node:advpoll-dates:value2。オフセット「-1 days」を追加します。これにより、投票締め切りの1日前にメールがスケジュールされます。

    識別子を「Poll closure notification: [node:nid] - [node:title]」のようなものに設定します。新しいスケジュールされたタスクがキューに追加されるたびに一意の値を持つ必要があるため、node:titleおよびnode:nidを使用する必要があります。

    ポーリングNodeフィールドをnodeに設定します。

    ルールを保存してテストします。

    { "rules_schedule_notification_about_poll_closure" : {
    "LABEL" : "Schedule notification about poll closure",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "rules_scheduler" ],
    "ON" : {
      "node_insert--advpoll" : { "bundle" : "advpoll" },
      "node_update--advpoll" : { "bundle" : "advpoll" }
    },
    "IF" : [
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "advpoll_dates" } }
    ],
    "DO" : [
      { "schedule" : {
          "component" : "rules_notify_admin_about_poll_closure",
          "date" : {
            "select" : "node:advpoll-dates:value2",
            "date_offset" : { "value" : -86400 }
          },
          "identifier" : "Poll closure notification: [node:nid]",
          "param_poll_node" : [ "node" ]
        }
      }
    ]}}
    

コンポーネントのエクスポートと、使用して好みに合わせて変更できるルールを提供しました。お役に立てれば。

追伸スケジュールされたイベントを適切に機能させるには、WebサイトでCronを有効にして構成する必要があります。

2
oksana-c