web-dev-qa-db-ja.com

ルールアクション(Ubercart)で製品の分類用語を確認する方法

私はDrupal 7をUbercartで使用しています。顧客が特定の分類用語にマッピングされた製品を購入したときにメールを送信するように設定しようとしています。

カスタムルール( Rules で作成)にアクションを追加してみました。ただし、商品フィールドの値をチェックしたり、分類用語に基づいて実行できるようなアクションはありません。

Rules アクションで製品フィールドをチェックする別の方法はありますか?

3
AnAnD

基本的なルールを見てみましょう( Rules エクスポート形式):

{ "rules_check_taxonomy_term" : {
    "LABEL" : "Check Taxonomy Term",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "node_insert" : [], "node_update" : [] },
    "IF" : [
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_tags" } },
      { "list_contains" : { "list" : [ "node:field-tags" ], "item" : "21" } }
    ],
    "DO" : [
      { "drupal_message" : { "message" : "A node containing the tag [node:field_tags] just got created or updated." } }
    ]
  }
}

このルールが行うことは次のとおりです。

  • ルールイベント:新しいコンテンツを保存した後、既存のコンテンツを更新した後
  • ルール条件:

    • エンティティにはフィールドがあります "field_tags"、これは用語参照のマシン名ですチェックしたいフィールド。
    • リストには項目が含まれます "node:field-tags"と分類用語識別子値 "21 "(これは、このルール条件でチェックしたい用語の用語IDです)。
  • ルールアクション:サイトにメッセージを表示します(「タグ[node:field_tags]を含むノードが作成または更新されました。」([node:field_tags]用語id = 21)の実際の用語。

この質問のコンテキストで上記のルールの例で重要なのは、2つのルール条件です。

ルールUIを使用して、上記のルールをサイトにインポートします。ケースに合わせるために必要な調整は次のとおりです。

  • ルールイベントを、「顧客が製品を購入したとき」に一致するイベントに置き換えます。
  • ルール条件内で、次の変更を実行します。

    • 「ノード」エンティティを自分のエンティティに置き換えます。
    • 用語参照「field_tags」のマシン名を置き換え、「term id」をケースに合わせて調整します。
  • ルールアクションを「適切な電子メールを送信する」に置き換えます。
1
Pierre.Vriens