2

如何在 Commerce-Order 对象中获取 Commerce-Product-Display 信息?

问题是当用户付款以发布节点时,我需要发布 Commerce-Product-Display 节点。我正在使用规则来检测付款并尝试发布节点。

我的问题是,因为Completing the checkout process Rules 事件只有 Commerce-Order 的数据,而 Commerce-Order 没有 Product 和 Product display 的信息,所以我无法发布节点。

4

2 回答 2

3

好的,这是我根据您在问题中提供的新信息的新答案

==================================

所以这可能比您预期的要复杂一些,但并非不可能!有两件事很重要:

  • 附加到您的订单的订单项将包含您的产品和
  • 您将需要使用规则组件,以便能够在规则操作中添加额外的“条件操作”组合

这是如何做到的:

  1. 在“完成结帐过程”触发的规则中,在“操作”部分添加一个循环。您应该在“添加操作”旁边看到“添加循环”。我们将使用此循环遍历您订单中的所有商业行项目:这就是产品隐藏的地方

  2. 配置循环时,告诉它遍历 'commerce-order:commerce-line-items' 并重命名,或者记住在每个行项目通过时它将调用什么。

    在此处输入图像描述

  3. 现在 - 因为它正在处理您订单的每个订单项,我们需要使用自己的一组“条件”和“操作”来调用一个全新的规则。我们需要的条件是检查该行项目是否包含您期望的产品,并且操作可以是您想要的任何内容——基于某个字段或其他内容发布一个节点。就我而言,该操作将只是发送一封电子邮件以证明我找到了产品。当我们需要规则中的条件动作集时,我们需要创建一个规则组件

  4. 转到 /admin/config/workflow/rules/components 以创建一个新的规则组件来为上述每个项目运行。单击页面顶部的“添加新组件”链接

  5. 从下拉选项中选择“规则”,因为这将是一个包含条件和操作的组件

  6. 命名规则,在“变量”部分,我们必须让它知道我们将向它传递一个参数来使用。在我们的例子中,它将是当前正在迭代的商业订单项。

在此处输入图像描述

  1. 向您的组件添加两个条件(或您认为必要的任何检查)。我添加了 'Entity is of type' => Commerce Line item 和 'Entity has field' => commerce_product。所以这适用于我所有的产品。
  2. 我在我的组件上设置的条件是发送一封电子邮件,我在邮件正文中填写了以下内容:[line-item:commerce_product],每次我在邮件中打印出精美的产品名称测试检查!

但首先 - 保存后如何为每个订单项类型调用此组件?继续阅读:

  1. 保存组件后,在循环 中添加一个操作:在此处输入图像描述
  2. 从现在开始,在您的操作的最底部,您将看到一个全新的“组件”部分,在您的情况下,您现在应该只有一个。选择它为每个项目调用它: 在此处输入图像描述
  3. 最后一步是填写要传递给该组件的参数,这显然是您当前所在的 list_item,或者如果您更改了当前项目的计算机名称,则它是什么。
  4. 保存并测试!

哇!这有点复杂,但我希望它能让你朝着正确的方向前进!

于 2013-07-24T19:51:16.600 回答
1

Drupal 中规则的工作方式是默认情况下,并非所有字段都显示在您的实体中。您需要做的是提示规则将您的对象识别为某种类型的节点,以便规则添加其所有适当的字段。

您可以通过以下方式执行此操作

  • 使用节点部分检查下的“内容是类型”(并选择您的 Commerce Display 节点类型或
  • 直接使用“实体”部分下的“实体具有字段”检查来检查您要使用的特定字段。

其中任何一个都应提示规则识别您正在使用的实体类型,并使用必要的字段填充操作。

让我们知道这是否有效!

于 2013-07-23T14:18:21.750 回答