基于规则的节点创建:商业产品+产品显示节点集

时间:2011-06-26 16:23:32

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

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

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

2 个答案:

答案 0 :(得分:2)

商业产品展示经理没有必要,我已经开始工作,我从未使用过那个模块。

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

以下是我的规则导出:

{ "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创建上述内容的过程,请告诉我

答案 1 :(得分: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") - 重要的是选择"实体创建:field-product:0"而不是&# 34;实体创建的:字段产物"使它工作,因为我们想要分配特定产品而不是产品列表。

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