Налаштовані продукти та набір атрибутів


18

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 кольори (???)

Мені вдалося вирішити проблему, змінивши набір атрибутів для продуктів, які не з’явились, але я все одно спантеличений.

Примітка . Не намагайтеся цього вдома. Або ви можете спробувати його вдома, але не на живому сервері.

Відповіді:


13

Після запитання про це - причини, які я маю. Сподіваємось, що це задовольнить вас, навіть якщо це, напевно, те, що ви очікували.

  1. Інтерфейс adminhtml був зроблений з наміром зробити торговців важким для повного викручування.

З цієї причини багато функцій, які надаються Magento як Framework, неможливі через користувальницький інтерфейс.
Причина того, що тільки продукти в одному наборі атрибутів можна вибрати як асоційовані прості продукти для налаштування, полягає в тому, що це було в специфікаціях.
Як ви сказали, це має сенс саме так.

  1. Ще одна причина - роздуми про призначення наборів атрибутів. Однією з причин їх існування є зменшення кількості атрибутів та параметрів, які підлягають завантаженню та обробці під час запиту. Застосовувати таке мислення до конфігурацій має сенс, оскільки це відносно дорогий тип товару.

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

Напевно, було б легко змусити конфігуратори працювати з елементами з різних наборів атрибутів. Це просто не було призначено таким чином.

Я не питав далі і не дивився на себе, щоб побачити, яка взаємодія з кодом точно дала дивний результат на фронті. Напевно, це не важливо, оскільки якби я правильно вас зрозумів, де просять міркування щодо рішення про виключення простих продуктів із наборів атрибутів, що відрізняються від настроюваного, а не пояснення коду.


Дякую Вінаю. Я сподівався глибоко в думці з причини "душі розуму". Було б весело :). Це задовільне пояснення. Що стосується "дивного результату", то копати в коді не потрібно. Я це зроблю, коли мені набридне. У мене ще є дамп БД і спосіб відтворити той же результат. Найімовірніше, тому, що я вкручувався безпосередньо в базу даних. Я опублікую результат, коли / якщо знайду його.
Маріус

2
Tsk tsk, @Marius - не чіпай db;)
philwinkle

4
@philwinkle. Я знаю, я знаю, Всесвіт вибухне, якщо це зробити. Що я можу сказати? Мені подобається жити небезпечно. На свою захист я сказав "не намагайся цього використовувати на живому сервері".
Маріус

1
Досі чекаю, коли мій розум теж
роздується

2

Ми використовуємо розширення під назвою RapidFlow від Unirgy (яке я не можу рекомендувати досить високо) для імпорту та експорту. Одна з можливостей версії Pro дозволяє змінювати набори атрибутів. Інша - створення продуктів за допомогою імпорту CSV. Інколи ми створюємо нові прості продукти для налаштування, а іноді випадково ці прості продукти мають різні набори атрибутів, ніж їхні батьки.

Швидкий потік із задоволенням імпортує ці продукти та змінить набори атрибутів. Ми, як правило, не задоволені результатами. Продукти, які можна налаштувати, налаштовані за атрибутами, що не входять до їх набору атрибутів, не відображаються в адміністраторі продукту і повинні бути відремонтовані. Якщо ми не змінимо набір атрибутів батьків, як ви зазначали, діти просто не можуть бути належним чином пов'язані з батьком. Вони існують як об'єкти Magento, їх можна редагувати, але вони не відображатимуться як діти на передній сторінці продукту або у списку асоційованих батьківських продуктів, які можна налаштувати.

Таким чином, з суто технічної точки зору, прості продукти можуть бути в іншому наборі атрибутів, ніж їх батьківський. Але оскільки така поведінка не підтримується навіть в EE, і тому бритва Оккама говорить, що коли вони розробляли Magento, Varien devs не бачив потреби.


1
Дякую за відповідь (та рекомендації щодо розширення), але це не відповідає на моє запитання. Я сказав, що мені вдалося вирішити свою проблему, безпосередньо змінивши базу даних. Я знаю, що не повинен цього робити, але я добре знав, що роблю - і резервну копію бази даних :). Мені було просто цікаво, чому існує таке обмеження. Наскільки "Varien devs не бачив потреби", я відчуваю, що ви помиляєтесь. Якщо ви застосовуєте обмеження, це повинно бути причиною цього.
Маріус
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.