【问题标题】:Rule-based node creation: commerce product + product display node set基于规则的节点创建:商业产品+产品展示节点集
【发布时间】:2011-06-26 16:23:31
【问题描述】:

我正在尝试将 Commerce 产品类型绑定到我自己的自定义类型节点(用作显示节点)。目标是在尽可能少的地方输入新数据。因此,我正在探索在创建另一种类型时基于规则创建一种类型。似乎两个方向都在起作用。不过,在这两者中,我更喜欢在用户创建自定义类型节点时自动创建商业产品,然后将其用作产品展示。

我想知道是否有人做过这个选择并且可以推荐这个。另外,commerce_product_display_manager 模块是否必要?

【问题讨论】:

    标签: drupal drupal-7 content-type drupal-commerce drupal-rules


    【解决方案1】:

    Commerce Product Display Manager 不是必需的,我已经让它工作了,但我从未使用过该模块。

    我选择了保存产品后自动创建节点的路线。

    以下是我为此导出的规则:

    { "rules_create_product_display" : {
        "LABEL" : "Create Product Display",
        "PLUGIN" : "reaction rule",
        "REQUIRES" : [ "rules", "entity" ],
        "ON" : [ "commerce_product_insert" ],
        "IF" : [
          { "data_is" : { "data" : [ "commerce-product:type" ], "value" : "**PRODUCT_TYPE**" } }
        ],
        "DO" : [
          { "entity_create" : {
              "USING" : {
                "type" : "node",
                "param_type" : "**NODE_TYPE**",
                "param_title" : "[commerce-product:title]",
                "param_author" : [ "commerce-product:creator" ]
              },
              "PROVIDE" : { "entity_created" : { "entity_created" : "Created entity" } }
            }
          },
          { "data_set" : {
              "data" : [ "entity-created:**PRODUCT_REFERENCE**" ],
              "value" : [ "commerce-product" ]
            }
          }
        ]
      }
    }
    

    您需要将自己的值替换为:

    • PRODUCT_TYPE(已创建的产品类型)
    • NODE_TYPE(正在创建的节点类型)
    • PRODUCT_REFERENCE(将引用创建的产品的字段)

    抱歉,我现在不能花更多时间来提供更好的答案,如果您希望我详细说明使用 GUI 创建上述内容的过程,请告诉我

    【讨论】:

      【解决方案2】:

      上面的例子很有用,但这里有一个更具体的例子:

      { "rules_create_product_display_on_product_creation" : {
          "LABEL" : "Create Product Display on Product creation",
          "PLUGIN" : "reaction rule",
          "REQUIRES" : [ "rules", "entity" ],
          "ON" : [ "commerce_product_insert" ],
          "IF" : [
            { "entity_is_of_type" : { "entity" : [ "commerce-product" ], "type" : "commerce_product" } }
          ],
          "DO" : [
            { "entity_create" : {
                "USING" : {
                  "type" : "node",
                  "param_type" : "product_display",
                  "param_title" : "[commerce-product:title]",
                  "param_author" : [ "commerce-product:creator" ]
                },
                "PROVIDE" : { "entity_created" : { "entity_created" : "Created entity" } }
              }
            },
            { "data_set" : {
                "data" : [ "entity-created:field-product:0" ],
                "value" : [ "commerce-product" ]
              }
            }
          ]
        }
      }
      

      我遇到的唯一问题是第二个操作(“data_set”)——重要的是选择“entity-created:field-product:0”,而不是“entity-created:field-product”工作,因为我们要分配特定产品而不是产品列表。

      此示例使用标准产品显示节点类型 (product_display),但您可以将其更改为您正在使用的节点类型。另请记住,这仅适用于一种产品类型 - 应为每种产品类型创建单独的规则。您还可以在删除产品时创建删除产品展示节点的规则。 此规则仅在您连接一品一品展示时才有用。如果您需要为每个产品展示添加更多产品(颜色、不同价格的图片),那么您必须使用Commerce Bulk Product Creation 模块。

      【讨论】:

        猜你喜欢
        • 2013-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-12
        • 1970-01-01
        • 2014-10-03
        • 1970-01-01
        • 2018-03-11
        相关资源
        最近更新 更多