【问题标题】:Drupal Commerce Order object extra dataDrupal Commerce Order 对象额外数据
【发布时间】:2013-07-22 20:57:42
【问题描述】:

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

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

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

【问题讨论】:

    标签: entities drupal-commerce


    【解决方案1】:

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

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

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

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

    这是怎么做的:

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

    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. 保存并测试!

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

    【讨论】:

    • 说谢谢是不够的,但无论如何都要谢谢。非常感谢您的详细回复并帮助我解决了我的问题:-)
    • 没问题 - 进入 Drupal Commerce 有点令人困惑,所以我很高兴你能解决问题。 ;-)
    【解决方案2】:

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

    你可以这样做

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

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

    让我们知道这是否可行!

    【讨论】:

    • 感谢您的详细回复。但是,我的规则在“完成结帐过程”事件上执行。由于该事件不基于内容类型,因此我无法包含您所描述的适当字段。 “实体具有字段”在解决此问题时也不是很清楚,因为我正在尝试查找与订单相关的产品日期。因为它不存在,实体字段不太可能工作 - 除非我遗漏了什么
    • 嗯,我想我对您问题的这一部分感到困惑:“我发现它没有与 Commerce-Product 或 Commerce-Display 实体相关的数据”。因此,我假设您已经在使用产品或产品展示,但只是看不到它们的字段。如果您的规则是在“将产品添加到购物车”或其他类似规则时触发的,您应该能够获得该产品。无论如何,您的问题实际上是您不知道如何获得购物车中的产品,或者您将如何重新措辞?
    • 再次感谢 Boriana。我已经改述了我的问题。我希望它更清楚
    • 好的,我在下面有一个新的答案,但是这个答案仍然包含有关 GETTING 到您产品中的字段的重要信息,如果您在拿到产品后看不到然后。 :-) 祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    相关资源
    最近更新 更多