web-dev-qa-db-ja.com

ルールを使用して、フィールドコレクションのすべてのアイテムを含む本文を含む電子メールを送信する方法

フィールドコレクションを含むコンテンツタイプを定義しました。フィールドコレクションには4つのフィールドが含まれます。コンテンツが作成されると、1つ以上のフィールドコレクションが含まれる場合があります。

特定の役割のユーザーにメールを送信するルールを設定しました。ルールでトークンを使用して、本文にいくつかのデータフィールドを指定しました。 メールの本文に1つ以上のフィールドコレクションフィールドを指定する方法につまずきました。

"node has field"の条件を追加する必要があることを示すいくつかの投稿を見つけました。ドロップダウンリストから何を選択すればよいかわからなかったので、論理的に推測しました。それはいくつかのトークンを提供するように見えました。

ただし、メールの本文でフィールドコレクションを指定するためにいくつかの方法を試しましたが、すべて失敗しました。フィールドコレクションを表示しようとしたところ、メールが空です。

電子メールの本文でフィールドコレクションのフィールドを指定するにはどうすればよいですか?

3
rrirower

パート1:カスタムルール

このルールを(ルールエクスポート形式で)見てください。IMOは、あなたの質問に対する可能な回答です。

{ "rules_field_collection_msg_and_email_body" : {
    "LABEL" : "Field Collection msg and eMail body",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "node_view" : [] },
    "IF" : [
      { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_article_details" } },
      { "user_has_role" : {
          "account" : [ "site:current-user" ],
          "roles" : { "value" : { "3" : "3" } }
        }
      }
    ],
    "DO" : [
      { "variable_add" : {
          "USING" : {
            "type" : "text",
            "value" : "\u003Ch2\u003EThis is a demo of a node containing a field collection ... \u003C\/h2\u003E\r\n\u003Chr \/\u003E\r\n\u003Cstrong\u003EAbout this demo\u003C\/strong\u003E:\u003Cbr \/\u003E\r\n\u003Cbr \/\u003E\r\nThe machine name of the field collection is \u003Cstrong\u003Efield_article_details\u003C\/strong\u003E, and the number of values for it is unlimited.\u003Cbr \/\u003E\r\nThis field collection has these fields:\u003Cbr \/\u003E\u003Cbr \/\u003E\r\n- a text field labeled \u003Cstrong\u003EAuthor\u003C\/strong\u003E with machine name \u003Cstrong\u003Efield_author\u003C\/strong\u003E.\u003Cbr \/\u003E\r\n- a decimal field labeled \u003Cstrong\u003EPrice\u003C\/strong\u003E with machine name \u003Cstrong\u003Efield_price\u003C\/strong\u003E.\u003Cbr \/\u003E\r\n- a boolean field labeled \u003Cstrong\u003EApproval required\u003C\/strong\u003E with machine name \u003Cstrong\u003Efield_approval_required\u003C\/strong\u003E.\u003Cbr \/\u003E\u003Cbr \/\u003E\r\n\u003Chr \/\u003E\r\n\u003Cstrong\u003EPart 1\u003C\/strong\u003E: The  list of items contained in the field collection with machine name \u003Cstrong\u003E\u0027field_article_details\u0027\u003C\/strong\u003E looks like so (note the comma to separate each item):\r\n\u003Chr \/\u003E\r\n[node:field_article_details]\r\n \u003Chr \/\u003E\r\n\u003Cstrong\u003EPart 2\u003C\/strong\u003E: The result of a \u003Cstrong\u003ERules loop\u003C\/strong\u003E that iterates for each of the field collection items (using its unique ID) ...\r\n\u003Chr \/\u003E"
          },
          "PROVIDE" : { "variable_added" : { "variable_for_email_body" : "Variable to use in eMail body" } }
        }
      },
      { "drupal_message" : { "message" : "\u003Ch2\u003EThis is a demo of a node containing a field collection ... \u003C\/h2\u003E\r\n\u003Chr \/\u003E\r\n\u003Cstrong\u003EAbout this demo\u003C\/strong\u003E:\u003Cbr \/\u003E\r\n\u003Cbr \/\u003E\r\nThe machine name of the field collection is \u003Cstrong\u003Efield_article_details\u003C\/strong\u003E, and the number of values for it is unlimited.\u003Cbr \/\u003E\r\nThis field collection has these fields:\u003Cbr \/\u003E\u003Cbr \/\u003E\r\n- a text field labeled \u003Cstrong\u003EAuthor\u003C\/strong\u003E with machine name \u003Cstrong\u003Efield_author\u003C\/strong\u003E.\u003Cbr \/\u003E\r\n- a decimal field labeled \u003Cstrong\u003EPrice\u003C\/strong\u003E with machine name \u003Cstrong\u003Efield_price\u003C\/strong\u003E.\u003Cbr \/\u003E\r\n- a boolean field labeled \u003Cstrong\u003EApproval required\u003C\/strong\u003E with machine name \u003Cstrong\u003Efield_approval_required\u003C\/strong\u003E.\u003Cbr \/\u003E\u003Cbr \/\u003E\r\n\u003Chr \/\u003E\r\n\u003Cstrong\u003EPart 1\u003C\/strong\u003E: The list of items contained in the field collection with machine name \u003Cstrong\u003E\u0027field_article_details\u0027\u003C\/strong\u003E looks like so (note the comma to separate each item):\r\n\u003Chr \/\u003E\r\n[node:field_article_details]\r\n \u003Chr \/\u003E\r\n\u003Cstrong\u003EPart 2\u003C\/strong\u003E: The result of a \u003Cstrong\u003ERules loop\u003C\/strong\u003E that iterates for each of the field collection items (using its unique ID) ...\r\n\u003Chr \/\u003E" } },
      { "LOOP" : {
          "USING" : { "list" : [ "node:field-article-details" ] },
          "ITEM" : { "article_details_item" : "article details item" },
          "DO" : [
            { "data_set" : {
                "data" : [ "variable-for-email-body" ],
                "value" : "[variable-for-email-body:value]\u003Cbr \/\u003E\r\nThe Host entity of this field collection item: [article-details-item:Host]\u003Cbr \/\u003E\r\nThe unique ID of the field collection item: [article-details-item:item-id]\u003Cbr \/\u003E\r\nField \u0022field_author\u0022: [article-details-item:field-author]\u003Cbr \/\u003E\r\nField \u0022field_price\u0022: [article-details-item:field-price]\u003Cbr \/\u003E\r\nField \u0022field_approval_required\u0022: [article-details-item:field-approval-required]\u003Cbr \/\u003E\r\n\u003Chr \/\u003E"
              }
            },
            { "drupal_message" : { "message" : "The Host entity of this field collection item: [article-details-item:Host]\u003Cbr \/\u003E\r\nThe unique ID of the field collection item: [article-details-item:item-id]\u003Cbr \/\u003E\r\nField \u0022field_author\u0022: [article-details-item:field-author]\u003Cbr \/\u003E\r\nField \u0022field_price\u0022: [article-details-item:field-price]\u003Cbr \/\u003E\r\nField \u0022field_approval_required\u0022: [article-details-item:field-approval-required]\u003Cbr \/\u003E\r\n\u003Chr \/\u003E" } }
          ]
        }
      },
      { "mail" : {
          "to" : [ "site:current-user:mail" ],
          "subject" : "Demo of an eMail with a body containing all items of a field collection",
          "message" : [ "variable-for-email-body" ],
          "language" : [ "" ]
        }
      }
    ]
  }
}

このルールの機能の詳細:

-ルールイベント:コンテンツが表示されます(適切なものに変更)。

-ルール条件

  • エンティティーには、エンティティー=ノードおよびフィールド(マシン名)= field_article_detailsのフィールドがあります(このマシン名を適切なものに適合させます)。
  • ユーザーには、user = [site:current-user]およびロール管理者のロールがあります(この条件を適切なものに適用するか、完全に削除しても、違いはありません)。

-ルールアクション(これがpartyが始まる場所です...注意してください!):

  • Add a variable (後で電子メールの本文で使用する...)、マシン名variable_for_email_body(適切なものに適応)、およびパート1からのすべてを使用してデモに対応する初期値を設定しますパート2のヘッダー行。

  • Show a message on the site、これは、前のルールアクションが実行されたときに何が起こっているかを確認するためのQAテスト用です。これは、前のステップでvariable_for_email_body変数に割り当てられた初期値と同等のものを示しています。

  • 追加する Loop リスト[node:field-article-details](フィールドコレクションフィールドをフォローしていますか!)、およびリストアイテムにはarticle_details_itemを使用します。このループ内で、次のルールアクションを追加します。

    • Set a data value、変数[variable-for-email-body](最初のルールアクションとして追加しました!)、および値(注意してください、ここに手がかりが表示されます)...のように見えるもの(このルールループの各反復で、各フィールドコレクションアイテムの実際のデータを[variable-for-email-body:value]の末尾に連結(追加)し、eMail本文で表示したい他の固定テキストやHTMLタグで囲みます)。

    [variable-for-email-body:value]<br />

    Host entity of this field collection item: [article-details-item:Host]<br />

    Unique ID of the field collection item: [article-details-item:item-id]<br />

    Field "field_author": [article-details-item:field-author]<br />

    Field "field_price": [article-details-item:field-price]<br />

    Field "field_approval_required": [article-details-item:field-approval-required]<br />

    <hr />

    • Show a message on the site、これは、前のルールアクションが実行されたときに何が起こっているかを確認するための、QAテスト(および)のためのものです。 variable_for_email_body変数に割り当てられた以前の値に何が連結(追加)されたかを示します。
  • Send mail、これは非常に基本的です(上記のループで作業が完了した後...):

    • 宛先:[site:current-user:mail](適合するものに適応)
    • 件名:フィールドコレクションのすべてのアイテムを含む本文を含む電子メールのデモ(何にでも適合する)
    • メッセージ:[variable-for-email-body](適合するものに適応します。ここで、メッセージ本文の前または後にメッセージ本文に何かを追加するか、前のルールアクションでこの変数のコンテンツとして移動されるものを適応させます Add a variable または Set a data value

ルールUIを有効にしている場合は、自分のサイトに上記のルールをインポートできます。ただし、マシン名を自分の名前に合わせるように変更した後、最初に提案した変更の一部を適用する必要があります。インポート後、その中のイベントまたは条件を変更したり、アクションに変更を適用したりすることもできます。

パート2:デモ

ステータスメッセージ

This is a demo of a node containing a field collection ...
About this demo:

The machine name of the field collection is field_article_details, and the number of values for it is unlimited.
This field collection has these fields:

- a text field labeled Author with machine name field_author.
- a decimal field labeled Price with machine name field_price.
- a boolean field labeled Approval required with machine name field_approval_required.

Part 1: The list of items contained in the field collection with machine name 'field_article_details' looks like so (note the comma to separate each item):
Approval required:     No
Price:     12.45
Author:    Pierre Vriens
,
Approval required:     Yes
Price:     9.15
Author:    Barak Obama
,
Approval required:     No
Price:     3.40
Author:    Hillary Trump
,
Approval required:     Yes
Price:     1.23
Author:    Donald Clinton

Part 2: The result of a Rules loop that iterates for each of the field collection items (using its unique ID) ...
Host entity of this field collection item: 73
Unique ID of the field collection item: 1
Field "field_author": Pierre Vriens
Field "field_price": 12.45
Field "field_approval_required": No
Host entity of this field collection item: 73
Unique ID of the field collection item: 2
Field "field_author": Barak Obama
Field "field_price": 9.15
Field "field_approval_required": Yes
Host entity of this field collection item: 73
Unique ID of the field collection item: 3
Field "field_author": Hillary Trump
Field "field_price": 3.40
Field "field_approval_required": No
Host entity of this field collection item: 73
Unique ID of the field collection item: 4
Field "field_author": Donald Clinton
Field "field_price": 1.23
Field "field_approval_required": Yes

メール本文

これは、配信されたメールの本文のコンテンツ全体がどのように見えるかを示します(「Part 2」を探して、最も興味深いものを確認してください。 、 その一部):

 -------- THIS ISフィールドコレクションを含むノードのデモ...---------- 
 
 -------------------------------------------- ---------------------------------- 
 *このデモについて*:
フィールドコレクションのマシン名は* field_article_details *で、
値の数は無制限です。
このフィールドコレクションには次のフィールドがあります:
-*というラベルの付いたテキストフィールドAuthor *とマシン名* field_author *。
-10進数のフィールドに* Price *とマシン名* field_price *。
-ブールフィールドと* Approval required *にマシン名
 * field_approval_required *。
 ---------------------------------------- -------------------------------------- 
 *パート1 *:リストmachine 
 name * 'field_article_details' *のフィールドコレクションに含まれるアイテムのように見えます(それぞれを区切るためのカンマに注意してください
アイテム):
 ------- -------------------------------------------------- --------------------- [.__ __。] --------承認が必要:------------------------------------ ------------ 
 
いいえ
 --------価格:------------ ------------------------------------------------ 
 
 12.45 
 --------著者:-------------------------- --------------------------------- 
 
 Pierre Vriens 
 *削除[1] 
 *編集[2] 
 
、
 --------承認が必要です:-------- ---------------------------------------- 
 
はい
 --------価格:---------------------------------- -------------------------- 
 
 9.15 
 --------著者:------------------------------------------------ ----------- 
 
バラクオバマ
 *削除[3] 
 *編集[4] 
 
、
 --------承認が必要:------------------------------ ------------------ 
 
いいえ
 --------価格:------ -------------------------------------------------- ---- 
 
 3.40 
 --------著者:-------------------- - -------------------------------------- 
 
ヒラリートランプ
 *削除[5] 
 *編集[6] 
 
、
 --------承認が必要:--- --------------------------------------------- 
 
はい
 --------価格:----------------------------- ------------------------------- 
 
 1.23 
 --- -----著者:------------------------------------------- ---------------- 
 
ドナルドクリントン
 *削除[7] 
 *編集[8] 
 
 * [9] 
 
を追加--------------------------- -------------------------------------------------- -
 *パート2 *:各フィールドに対して反復する*ルールループ*の結果
コレクションアイテム(一意のIDを使用)... 
 --- -------------------------------------------------- ------------------------- 
このフィールドコレクションアイテムのホストエンティティ:73 
フィールドコレクションの一意のID item:1 
 Field "field_author":Pierre Vriens 
 Field "field_price":12。 45 
フィールド "field_approval_required":いいえ
 --------------------------------- --------------------------------------------- 
このフィールドコレクションアイテムのホストエンティティ:73 
フィールドコレクションアイテムの一意のID:2 
フィールド "field_author":Barak Obama 
フィールド "field_price":9.15 
フィールド "field_approval_required":はい
 -------------------------------------- ---------------------------------------- 
このフィールドのホストエンティティコレクションアイテム:73 
フィールドの一意のID:3 
フィールド "field_author":ヒラリートランプ
フィールド "field_price":3.40 
フィールド "field_approval_required" : 番号
 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - ----------------------------------- 
このフィールドコレクションアイテムのホストエンティティ:73 
フィールドコレクションアイテムの一意のID:4 
フィールド "field_author":ドナルドクリントン
フィールド "field_price":1.23 
フィールド "field_approval_required":はい
 ------------------------- -------------------------------------------------- --- 
 
 [1] http://www.example.com/field-collection/field-article-details/1/delete?destination=node/73 
 [2] http://www.example.com/field-collection/field-article-details/1/edit?destination=node/73 
 [3] http://www.example.com/ field-collection/field-article-details/2/delete?destination = node/73 
 [4] http://www.example.com/field-collection/field-article-details/2/edit ?destination = node/73 
 [5] http://www.example.com/field-collection/field-article-details/3/delete?destination=node/73 
 [6 ] http://www.example.com/field-collection/field-article-details/3/edit?destination=node/73 
 [7] http://www.example.com/field- collection/field-article-details/4/delete?destination = node/73 
 [8] http://www.example.com/field-collection/field-article-details/4/edit?destination = node/73 
 [9] http://www.example.com/field-collection/field-article-details/add/node/73?destination=node/73 

このメール本文のフォーマットはかなり(本当に?)悪いですが、「Part 2」の行の下にあるものに注意してください。フィールドコレクションのすべての項目について、電子メールの本文で知りたいと思うかもしれません...これがまさにこの質問の内容です。したがって、eMailのコンテンツを好みに応じて再フォーマットするだけです(つまり、不要な内容をすべて削除し、本当に関心のあるもののフォーマットを改善します)。

1
Pierre.Vriens