web-dev-qa-db-ja.com

(解決済み)複数の値の語彙の用語が選択されたときにルールを含むメールを送信する

タグが選択されているときにメール更新を取得しようとしています(ノードが挿入または更新されている場合)。

デバッグは、2番目の条件まで、すべてが正常に機能していることを示しています。 2番目の条件は、tid = 22が選択されている場合に比較する必要があります。そして、私はこれを機能させることができません..

語彙の名前は 'zichtbaarheid'(可視性のためのオランダ語)です。

{ "rules_vinkje_k_n_mail" : {
    "LABEL" : "Vinkje K\u0026N \u003E mail",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "node_insert" : [], "node_update" : [] },
    "IF" : [
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_zichtbaarheid" } },
      { "data_is" : {
          "data" : [ "node:field-zichtbaarheid" ],
          "value" : { "value" : { "22" : "22" } }
        }
      }
    ],
    "DO" : [
      { "mail" : {
          "to" : "\[email protected]\u003E",
          "subject" : "[node:title]",
          "message" : "[site:current-date]\r\n\r\n[node:body]",
          "language" : [ "" ]
        }
      }
    ]
  }
}

デバッグショー

...
10.619 ms The condition entity_has_field evaluated to TRUE [edit]
11.293 ms The condition data_is evaluated to FALSE [edit]
...

===編集===

正しい設定は以下の通りです。イベント:新しいコンテンツの保存後と更新後

  1. 最初の条件(用語を「ロードする」):[エンティティにフィールドがあります]>データセレクター[ノード]で&フィールドで正しい語彙
  2. 2番目の条件:[リストに項目が含まれる]>データセレクター:ノード:[フィールド名]。次の画面で「直接入力モード」に切り替えます。用語はドロップダウンメニューに表示されます。適切な値を選択してください

そしてエクスポートは(名前のようないくつかの設定を変更する必要があります):

{ "rules_twee_vinkje_k_n_mail" : {
    "LABEL" : "TWEE Vinkje K\u0026N \u003E mail",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "node_insert" : [], "node_update" : [] },
    "IF" : [
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_zichtbaarheid" } },
      { "list_contains" : { "list" : [ "node:field-zichtbaarheid" ], "item" : "22" } }
    ],
    "DO" : [
      { "mail" : {
          "to" : "\[email protected]\u003E",
          "subject" : "[node:title]",
          "message" : "[site:current-date]\r\n\r\n[node:body]",
          "language" : [ "" ]
        }
      }
    ]
  }
}

(node:field-zichtbaarheidは、フィールドタグのように、用語名に置き換えてください)

また、再帰を防ぐためのボーナスとして、語彙に「メール送信」という用語を追加しました。この用語は非表示ですが、アクションで更新されています。ルールを実行するときの2番目の条件は、「メール送信」という用語がチェックされているかどうかをチェックすることです。チェックすると、出力はfalseになり、ルールはそれ以上実行されません。

3
MatthijsG

問題を引き起こす可能性のある2つの理由が考えられます。

  1. 多分それはデータ型変換の問題です。データ比較(= "text_matches")の代わりにテキスト比較(= "data_is")を使用する場合、2番目の条件が機能するほうが幸運かもしれません。
  2. 多分あなたのzichtbaarheids-fieldは複数値フィールドですか?

これをさらに調査するには、最初のルールアクションとして「メッセージの表示」(システム内)を追加して、(フィールドに適切なトークンを使用して)実際の値を表示します。ルールアクションが実行されます)。それでも問題が解決しない場合は、(一時的に) Devel モジュールを有効にして、(値を表示する)などのルールアクションを(一時的に)追加できるようにすることもできます。

1
Pierre.Vriens