#php #magento2 #configurable-product
#php #magento2 #настраиваемый-продукт
Вопрос:
В Magento 2.4.1 я создал php-скрипт (не модуль) для добавления настраиваемого продукта.
Я хочу добавить настраиваемый продукт с атрибутами color
amp; size
. У меня уже есть образцы продуктов, и у меня есть информация об их идентификаторах продуктов, какой из них использовать в каких продуктах конфигурации. Я думал, что мне просто нужно назначить простые идентификаторы продуктов в качестве связанных продуктов, но это не сработало.
Я прочитал несколько статей, в которых говорится, что сначала мне нужно добавить данные параметров. Итак, я сделал приведенный ниже код, но это тоже не работает:
$productId = $productObjectManager->getIdBySku($sku);
$product = null;
if ($product) {
$product = $productObjectManager->load($productId);
} else {
$product = $productObjectManager;
$product->setTypeId(MagentoConfigurableProductModelProductTypeConfigurable::TYPE_CODE);
$product->setAttributeSetId($productObjectManager->getDefaultAttributeSetId());
$product->setSku($sku);
}
$product->setStoreId(0);
$product->setWebsiteIds($websiteIds);
$product->setVisibility(MagentoCatalogModelProductVisibility::VISIBILITY_BOTH);
$product->setStatus(MagentoCatalogModelProductAttributeSourceStatus::STATUS_ENABLED);
$product->setName($name);
$product->setPrice($price);
$product->setWeight($weight);
$product->setTaxClassId(0); // None
$product->setStockData([
'use_config_manage_stock' => 1,
'is_in_stock' => 1
]);
$configurableAttributesData = [];
$position = 0;
foreach ($configurableAttributes as $configurableAttributeId => $configurableAttribute) {
$configurableAttributesData[] = [
'attribute_id' => $configurableAttribute->getId(),
'code' => $configurableAttribute->getAttributeCode(),
'label' => $configurableAttribute->getStoreLabel(),
'position' => $position,
'values' => $configurableAttributeValues[$configurableAttribute->getAttributeCode()],
];
$position ;
}
//echo '<pre>';print_r($configurableAttributesData);die;
$optionsFactory = $objectManager->create(MagentoConfigurableProductHelperProductOptionsFactory::class);
$configurableOptions = $optionsFactory->create($configurableAttributesData);
$extensionConfigurableAttributes = $product->getExtensionAttributes();
$extensionConfigurableAttributes->setConfigurableProductOptions($configurableOptions);
$extensionConfigurableAttributes->setConfigurableProductLinks($configurableProducts);
$product->setExtensionAttributes($extensionConfigurableAttributes);
$product->save();
echo 'Added';
Я передаю $configurableAttributesData
данные, как показано ниже:
Array
(
[0] => Array
(
[attribute_id] => 93
[code] => color
[label] => Colour
[position] => 0
[values] => Array
(
[0] => Array
(
[label] => Colour
[attribute_id] => 93
[value_index] => Black
)
)
)
[1] => Array
(
[attribute_id] => 140
[code] => size
[label] => Size
[position] => 1
[values] => Array
(
[0] => Array
(
[label] => Size
[attribute_id] => 140
[value_index] => 3
)
[1] => Array
(
[label] => Size
[attribute_id] => 140
[value_index] => 4
)
[2] => Array
(
[label] => Size
[attribute_id] => 140
[value_index] => 5
)
[3] => Array
(
[label] => Size
[attribute_id] => 140
[value_index] => 6
)
[4] => Array
(
[label] => Size
[attribute_id] => 140
[value_index] => 7
)
[5] => Array
(
[label] => Size
[attribute_id] => 140
[value_index] => 8
)
[6] => Array
(
[label] => Size
[attribute_id] => 140
[value_index] => 9
)
[7] => Array
(
[label] => Size
[attribute_id] => 140
[value_index] => 10
)
[8] => Array
(
[label] => Size
[attribute_id] => 140
[value_index] => 11
)
[9] => Array
(
[label] => Size
[attribute_id] => 140
[value_index] => 12
)
[10] => Array
(
[label] => Size
[attribute_id] => 140
[value_index] => 13
)
[11] => Array
(
[label] => Size
[attribute_id] => 140
[value_index] => 14
)
)
)
)
Может кто-нибудь, пожалуйста, помогите!
Ответ №1:
Вы можете сделать это, создав пользовательское расширение или с помощью API Magento 2.
Ответ №2:
Прочитайте эту статью. Это очень подробное описание того, что вам нужно будет сделать.
https://meetanshi.com/blog/programmatically-create-configurable-product-in-magento-2/
Удачи!
Комментарии:
1. Он добавляет только новый тип конфигурации product, где мой вопрос отличается, пожалуйста, прочтите его и дайте мне знать, если вам нужны дополнительные сведения для понимания 🙂