web-dev-qa-db-ja.com

データセレクターを使用したルールでの請求先住所の名の選択

Rules for Commerceの請求先住所>名のデータセレクターを使用するにはどうすればよいですか?

自動生成されるメールで注文所有者の名を使用したい。

例えば:

こんにちはScott

ご注文ありがとうございます...

4
Scott Lawrence

解決策は、「フルネーム」フィールドの組み合わせではなく、姓と名の分割フィールドを使用する請求顧客プロファイルの住所フィールドに依存している可能性があります。私のCommerceサイトで、住所フィールドに氏名フィールドが姓名フィールドに分割されたり、その逆に分割されたりするのを防ぐバグがあるようです(すぐに修正する予定です)。

顧客が姓名を別々に入力していると仮定すると、必要なことは、注文からプロファイルを介して住所フィールドの名までドリルダウンすることだけです。ルールデータセレクターを使用してこれを行うには、最初に2つの「エンティティにフィールドがあります」条件を追加する必要があります。1つはcommerce-orderエンティティにcommerce_customer_billingフィールドがあり、もう1つはcommerce-order:commerce-customer-請求エンティティにはcommerce_customer_addressフィールドがあります。それらが適切な場合は、データセレクターを使用して、次のトークンにドリルダウンできます。

commerce-order:commerce-customer-billing:commerce-customer-address:first-name

問題は、実際にこの値を電子メールの本文に埋め込む場合です。現在のところ、私が知る限り、同じパターンを使用して名にドリルダウンするトークンのチェーン(ルールUI用語では置換パターン)はありません。 addressfield.moduleのコードを見ると、トークンに関連するコードはありません。これは、トークンモジュールの機能リクエストとして開く必要がある場合があります。

8
Ryan Szrama

解決策を見つけました。私のルールはすでに電子メールを送信していましたが、顧客の姓名のトークンが表示されませんでした。

  1. 「エンティティにフィールドがある」という条件を追加> commerce_customer_billing
  2. アクション「IDでエンティティを取得」を追加します。

    エンティティタイプ>値:Commerce Customer Profile

    識別子>データセレクター:commerce-order:commerce-customer-billing:profile-id

    提供される変数
    変数ラベル:顧客請求プロファイル
    変数名:customer_billing_profile

  3. アクション「メールを送信」を追加します
    (ルール内でメールを送信するためにMime Mailモジュールをインストールした場合は、私が行ったように[HTMLメールを送信]を選択できます)

    これらのトークンを名と姓に使用します。
    [customer-billing-profile:commerce-customer-address:first_name]
    [customer-billing-profile:commerce-customer-address:last_name]

これは、アドレス帳またはプロファイルではなく、注文自体から姓名を取得していることに注意してください。したがって、ユーザーがアドレス帳で名前を変更した場合、その順序で更新されません。私はそれを試してみました。

ここにあるルールセットに触発されました:
https://Gist.github.com/ogredude/395656

8
evanasse