TL; Д.Р . : Есть ли причина, по которой простые продукты, связанные с настраиваемым продуктом, должны быть в том же наборе атрибутов, что и сам настраиваемый продукт? Я имею в виду, есть ли техническая причина? Я знаю причину "здравого смысла". Если вы продаете пару обуви, то все версии, в зависимости от цвета и размера, также должны быть обувью .
Длинная версия : у меня была задача «объединить» некоторые настраиваемые продукты. Я имею в виду от 2 или более, чтобы сделать только один. Я не хотел делать их вручную из-за количества продуктов, и я не хотел проходить через$product->load(..)->set...()->save()
из-за количества времени, необходимого для запуска сценария. Поэтому я замкнул процесс, потому что был уверен, что ни один из простых продуктов не перекрывается. Было уникальное сочетание размера и цвета. Я сделал это:
Mage::getResourceSingleton('catalog/product_type_configurable')
->saveProducts($mainConfigrableProduct, $simpleProductIds);
где $simpleProductIds
- массив всех простых идентификаторов продуктов, связанных с настраиваемыми продуктами, которые необходимо объединить.
Это прекрасно работало для большинства продуктов, но у некоторых были проблемы.
Если бы я позвонил
$productIds = $product->getTypeInstance()->getUsedProductIds()
Я бы получил все простые идентификаторы продуктов, но в бэкэнде появились только некоторые из них. Покопавшись в течение некоторого времени, я обнаружил, что были показаны только те, которые имеют тот же набор атрибутов, что и настраиваемый продукт. Другой набор атрибутов очень похож на первый, только некоторые незначительные отличия, но он содержит настраиваемые атрибуты (размер и цвет).
А теперь странная вещь. В интерфейсе я ожидал увидеть либо все продукты ($ productIds в приведенном выше коде), либо только продукты в одном наборе атрибутов. Ну, было что-то среднее.
- 20 идентификаторов сопутствующих товаров - 5 размеров, 4 цвета
- 10 связанных продуктов в бэкэнде - 5 размеров, 2 цвета - остальные 2 цвета (10 продуктов) были в другом наборе атрибутов
- 15 комбинаций в интерфейсе - 5 размеров 3 цвета (???)
Я смог решить проблему, изменив набор атрибутов для продуктов, которые не появлялись, но я все еще озадачен.
Примечание : не пытайтесь делать это дома. Или вы можете попробовать это дома, но не на живом сервере.
Мы используем расширение RapidFlow от Unirgy (которое я не могу рекомендовать достаточно) для импорта и экспорта. Одна из функций в версии Pro позволяет изменять наборы атрибутов. Другой - создание продуктов через импорт CSV. Иногда мы создаем новые простые продукты для конфигурируемых, и иногда эти простые продукты имеют случайно наборы атрибутов, отличные от их родителей.
Rapidflow с удовольствием импортирует эти продукты и меняет наборы атрибутов. Мы, как правило, недовольны результатами. Настраиваемые продукты, настроенные с помощью атрибутов вне их набора атрибутов, не отображаются в администраторе продукта и должны быть исправлены. Если мы не изменим набор атрибутов родителя, как вы заметили, дочерние элементы просто не смогут быть правильно связаны с их родителем. Они существуют как сущности Magento, могут быть отредактированы, но не будут отображаться как дочерние на странице продукта переднего плана или в списке продуктов, связанных с настраиваемым родителем.
Таким образом, с чисто технической точки зрения простые продукты могут быть в другом наборе атрибутов, чем их родитель. Но так как это поведение не поддерживается, даже в EE, и поэтому Бритва Оккама говорит, что когда они разрабатывали Magento, разработчики Varien не видели в этом необходимости.
источник