如何在 Commerce-Order 对象中获取 Commerce-Product-Display 信息?
问题是当用户付款发布节点时,我需要发布 Commerce-Product-Display 节点。我正在使用规则来检测付款并尝试发布节点。
我的问题是,因为完成结账流程规则事件仅包含商业订单的数据,而商业订单没有产品或产品显示的信息,我无法发布节点。
好的,这是我根据您在问题中提供的新信息的新答案
===================================
所以这可能比您预期的要复杂一点,但并非不可能!有两件事很重要:
- 附加到您的订单的行项目将包含您的产品和
- 您将需要使用规则组件,以便能够在规则操作中添加额外的“条件操作”组合
操作方法如下:
-
在“完成结账流程”时触发的规则中,在“Actions' 部分。您应该在“添加操作”旁边看到“添加循环”。我们将使用此循环来迭代订单中的所有商业订单项:这就是产品隐藏的地方
-
配置循环时,告诉它迭代“commerce-order:commerce-line-items”并重命名,或者记住它在遍历每个行项目时将调用的内容。
-
现在,当它遍历您的订单的每个订单项时,我们希望使用自己的一组“条件”和“操作”来调用一个全新的规则。我们需要的条件是检查该行项目是否包含您期望的产品,并且操作可以是您想要的任何操作 - 根据某个字段或其他内容发布节点。就我而言,操作只是发送一封电子邮件来证明我找到了产品。当我们需要在规则中设置条件动作时,我们需要创建一个规则组件!!
-
转到 /admin/config/workflow/rules/components 创建一个新的规则组件以针对上述每个项目运行。单击页面顶部的“添加新组件”链接
-
Select 'Rule' 从下拉选项中,因为这将是一个包含条件和操作的组件
-
命名规则,在“变量”部分中,我们必须让它知道我们将向其传递一个要使用的参数。在我们的例子中,它将是当前正在迭代的商业订单项。
- 向您的组件添加两个条件(或您认为必要的任何检查)。我添加了“实体类型”=> Commerce Line item 和“实体具有字段”=> commerce_product。所以这适用于我目前的所有产品。
- 我在组件上设置的条件是发送电子邮件,我在电子邮件正文中填写了以下内容:[line-item:commerce_product],每次我发送电子邮件时,它都会在电子邮件中漂亮地打印出产品名称测试过检查出来!
但首先 - 保存后如何为每个订单项类型调用此组件?继续阅读:
- After the component is saved, Add an action to your loop:
- From now on, at the very bottom of your actions, you'll see a brand new 'Components' section, and in your case, you should only have one now. Select it to call it for each item:
- 最后一步是填写要传递给该组件的参数,这显然是您当前所在的 list_item,或者当前项目的计算机名称(如果您更改了它)。
- 保存并测试!
哇!这有点复杂,但我希望它能为您指明正确的方向!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)