Вопрос

TL; Доктор: Есть ли какие -либо причина, по которой простые продукты, связанные с настраиваемым продуктом, должны быть в том же наборе атрибутов, что и сам настраиваемый продукт? Я имею в виду, есть ли какие -нибудь технический причина? Я знаю причину «здравого смысла». Если вы продаете пару туфли тогда все версии в зависимости от цвета и размера должны быть туфли также.
Длинная версия: У меня была задача «объединить» некоторые настраиваемые продукты. Я имею в виду от 2 или более, чтобы сделать только один. Я не хотел делать их вручную из -за количества продуктов, и я не хотел проходить $product->load(..)->set...()->save() Из -за количества времени, которое потребовалось для запуска сценария. Поэтому я коротко запланировал процесс, потому что я был уверен, что ни один из простых продуктов не перекрывался. Было уникальное сочетание размера и цвета. Я сделал это:

Mage::getResourceSingleton('catalog/product_type_configurable')
    ->saveProducts($mainConfigrableProduct, $simpleProductIds);

куда $simpleProductIds это массив всех простых идентификаторов продукта, связанных с настраиваемыми продуктами, которые необходимо объединить.
Это отлично сработало для большинства продуктов, но было несколько проблем.
Если я позвонил

$productIds = $product->getTypeInstance()->getUsedProductIds() 

Я бы получил все простые идентификаторы продукта, но в бэкэнде появились лишь некоторые из них. После некоторого времени я обнаружил, что единственными, которые были показаны, были те, которые в том же наборе атрибутов, что и настраиваемый продукт. Другой набор атрибутов очень похож на первый, лишь некоторые незначительные различия, но он содержит настраиваемые атрибуты (размер и цвет).
А теперь странная вещь. На фронте я ожидал увидеть либо все продукты ($ products в коде выше), либо только продукты в одном и том же наборе атрибутов. Ну, было что -то между ними.

  • 20 связанных идентификаторов продукта - 5 размеров, 4 цвета
  • 10 связанных продуктов в бэкэнд - 5 размеров, 2 цвета - остальные 2 цвета (10 продуктов) были в другом наборе атрибутов
  • 15 комбинаций на фронте - 5 размеров 3 цвета (???)

Я смог решить проблему, изменив набор атрибутов для продуктов, которые не появились, но я все еще озадачен.

Примечание: Не пробуйте это дома. Или вы можете попробовать его дома, но не на живом сервере.

Это было полезно?

Решение

После того, как я спрашиваю об этом, есть причины, которые у меня есть. Надеюсь, это удовлетворительно для вас, хотя это, вероятно, то, что вы ожидали.

  1. Интерфейс Adminhtml был сделан с намерением затруднить то, чтобы торговцам полностью испортилось.

По этой причине многие функции, которые предоставляются Magento в качестве структуры, невозможно через пользовательский интерфейс.
Причина, по которой только продукты в одном и том же наборе атрибутов выбираются в качестве связанных простых продуктов для конфигурации, заключается в том, что это то, что было в спецификациях.
Как вы сказали, это имеет смысл в этом смысле.

  1. Другие причины - это думать о целью наборов атрибутов. Одна из причин, по которой они существуют, заключается в сокращении количества атрибутов и опций, которые необходимо загрузить и обрабатывать во время запроса. Применение этого мышления к конфигурации имеет смысл, поскольку это относительно ресурсный тип продукта.

Поскольку бэкэнд был построен таким образом, логика Frontend для настройки никогда не должна была иметь дело с простыми продуктами из разных наборов атрибутов.
Вот почему ограничения не введены полностью там.

Вероятно, было бы легко сделать конфигурационные работы с SIMPLES из разных наборов атрибутов. Это просто не задумано.

Я не спрашивал дальше и не смотрел, чтобы увидеть, какое взаимодействие с кодом точно дало странный результат на фронте. Вероятно, это не важно, так как, если я правильно понял вам, где спрашивает обоснование решения исключить простые продукты из атрибутов, настраиваемых по сравнению с настраиваемым, а не объяснением кода.

Другие советы

Мы используем расширение, называемое Rapidflow от Unirgy (которое я не могу рекомендовать достаточно высоко) для импорта и экспорта. Одна из функций в Pro -версии позволяет изменять наборы атрибутов. Другим является создание продуктов через импорт CSV. Время от времени мы создаем новые простые продукты для конфигурации, а иногда и случайно, эти простые продукты имеют другие наборы атрибутов, чем их родители.

Rapidflow с радостью импортирует эти продукты и изменят наборы атрибутов. Мы не довольны результатами. Настраиваемые продукты, которые настроены атрибутами за пределами их набора атрибутов, не могут отображаться в администраторе продукта и должны быть отремонтированы. Если мы не изменим набор атрибутов родителя, как вы отметили, дети просто не могут быть должным образом связаны со своим родителем. Они существуют как сущности Magento, могут быть отредактированы, но не будут появляться в детстве на странице продукта передней части, или в списке продуктов настраиваемого родителя.

Таким образом, с чисто технической точки зрения, можно было бы быть в другом наборе атрибутов, чем их родитель. Но поскольку это поведение не поддерживается, даже в EE, и поэтому бритва Оккама говорит, что когда они разрабатывают Magento, разработчики Varien не видели необходимости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top