Создание узла на основе правил: коммерческий продукт + набор узлов отображения продукта - PullRequest
5 голосов
/ 26 июня 2011

Я пытаюсь привязать тип продукта Commerce к своему собственному узлу пользовательского типа (который служит узлом отображения).Цель состоит в том, чтобы ввести новые данные как можно меньше мест.Поэтому я изучаю создание одного типа на основе правил при создании другого.Похоже, оба направления работают.Однако из двух я предпочитаю автоматическое создание Коммерческого продукта при создании пользователем узла «Пользовательский тип», который затем будет отображать продукт.

Мне было интересно, прошел ли кто-либо через этот выбор и мог бы порекомендовать это,Также необходим ли модуль commerce_product_display_manager?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2012

Приведенный выше пример был полезен, но вот более конкретный:

{ "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" ]
        }
      }
    ]
  }
}

Единственная проблема, с которой я столкнулся, была со вторым действием («набор данных») - было важно выбрать «созданный объект: поле-продукт: 0», а не «созданный объект: поле-продукт», чтобы сделать его работать, потому что мы хотим назначить конкретный продукт, а не список продуктов.

В этом примере используется стандартный тип узла отображения продукта (product_display), но вы можете изменить его на тот, который вы используете. Также имейте в виду, что это работает только для одного типа продукта - для каждого типа продукта должно быть создано отдельное правило. Вы также можете создать правило для удаления узла отображения товара при удалении товара. Это правило полезно только в том случае, если у вас есть соединение один продукт-один продукт. Если вам нужно добавить больше продуктов для каждого продукта (цвета, изображения с разными ценами), вам необходимо использовать модуль Commerce Bulk Product Creation .

2 голосов
/ 01 августа 2011

Диспетчер отображения Commerce Product не нужен, я заставил его работать, и я никогда не использовал этот модуль.

Я пошел по пути автоматического создания узла после сохранения продукта.

Ниже приведены мои правила экспорта для этого:

{ "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 (поле, которое будет ссылаться на созданный продукт)

Извините, я не могу посвятить больше времени лучшему ответу, дайте мне знать, если вы хотите, чтобы я подробно остановился на процессе создания вышеперечисленного с помощью графического интерфейса пользователя

...