Magento Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½Π° ΡΡΡΠ³ΠΎΠ²ΠΈΡ, Ρ.Π΅. Π΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΡΠΌ ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π° Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΊΡΠΌ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π½Π΅, Π»ΠΎΠ³ΠΈΡΡΠΈΠΊΠ° ΠΈΠ»ΠΈ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΎ ΡΡΠ΅ΡΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, ΡΡΠΏΡΡΡΡΠ²Π°ΡΠΈ ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈΡΠ΅. ΠΡΡΠ³ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ERP ΡΠΈΡΡΠ΅ΠΌΠΈ) ΡΠ° ΠΏΠΎ-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ Π·Π° ΡΡΠΏΡΡΡΡΠ²Π°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ Π·Π°ΡΠΎ Π΄ΠΎΡΡΠ° ΡΠ΅ΡΡΠΎ Π² ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Magento Π²ΡΠ·Π½ΠΈΠΊΠ²Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ°Π³Π°Π·ΠΈΠ½ Ρ ΡΠ΅Π·ΠΈ Π΄ΡΡΠ³ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 1C).
ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ ΡΡΠ΅Π·:
- ΠΊΠ°ΡΠ°Π»ΠΎΠ³ (ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ, ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ);
- ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ (ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²ΠΈ Π½Π°Π»ΠΈΡΠ½ΠΎΡΡΠΈ Π² ΡΠΊΠ»Π°Π΄ΠΎΠ²Π΅ ΠΈ ΡΠ΅Π½ΠΈ);
- ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ;
- ΠΏΠΎΡΡΡΠΊΠΈ;
Magento ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΊΠ»Π°Ρ ΠΎΠ±Π΅ΠΊΡΠΈ Π·Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ -
ΠΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΈ ΠΏΠΎΡΡΡΠΊΠΈΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ°Ρ Π² Π΄ΡΡΠ³Π°ΡΠ° ΠΏΠΎΡΠΎΠΊΠ° β ΠΎΡ Magento ΠΊΡΠΌ Π²ΡΠ½ΡΠ½ΠΈ ERP ΡΠΈΡΡΠ΅ΠΌΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Ρ ΡΡΡ Π΅ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ, ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° Magento ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° βΠΊΡΡΡΡΠΌΠΈ ΠΈΠ·Π»Π΅ΡΡΡ Π° ΠΎΡ Π½Π°ΡΠ° ΡΡΡΠ°Π½Π°".
ΠΡΠΈΠ½ΡΠΈΠΏΠΈ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, Π·Π°ΠΏΠΈΡΠ°Π½ΠΈ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΎ Π² Magento ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΡΠ΅Π·
function __construct (MagentoCmsModelBlockFactory $blockFactory) {
$this->blockFactory = $blockFactory;
}
/** @var MagentoCmsModelBlock $block */
$block = $this->blockFactory->create();
ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΡΠ΅Π·
function __construct (MagentoCmsApiBlockRepositoryInterface $blockRepo) {
$this->blockRepo = $blockRepo;
}
$this->blockRepo->save($block);
ΠΠΎΠ΄Ρ ΠΎΠ΄ΡΡ βFactoryβ ΠΈ βRepositoryβ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² Π΄ΠΎΠΌΠ΅ΠΉΠ½Π° Π½Π° Magento 2.
ΠΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ°
ΠΠ»Π΅Π΄Π°ΠΌ ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΡΡΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° Magento 2.3. ΠΠ°ΠΉ-ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π΅ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° catalog_product_entity
(ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΡΠ΅Π³ΠΈΡΡΡΡ):
entity_id
attribute_set_id
type_id
sku
has_options
required_options
created_at
updated_at
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΡΡΠΌ Π΄ΠΎ Π΅Π΄ΠΈΠ½ Π²ΠΈΠ΄ ΠΏΡΠΎΠ΄ΡΠΊΡ (type_id='simple'
), Π½Π°Π±ΠΎΡ ΠΎΡ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ (attribute_set_id=4
) ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°ΠΉΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ has_options
ΠΈ required_options
. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ entity_id
, created_at
ΠΈ updated_at
ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ, ΡΠΎΠ³Π°Π²Π° Π²ΡΡΡΠ½ΠΎΡΡ, Π·Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ² ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ sku
. ΠΡΠ°Π²Ρ ΡΠΎΠ²Π°:
/** @var MagentoCatalogApiDataProductInterfaceFactory $factProd */
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
/** @var MagentoCatalogApiDataProductInterface $prod */
$prod = $factProd->create();
$prod->setAttributeSetId(4);
$prod->setTypeId('simple');
$prod->setSku($sku);
$repoProd->save($prod);
ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
The "Product Name" attribute value is empty. Set the attribute and try again.
ΠΠΎΠ±Π°Π²ΡΠΌ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΊΡΠΌ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡΡ Π»ΠΈΠΏΡΠ²Π° Price
. Π‘Π»Π΅Π΄ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠ΅Π½Π°ΡΠ°, ΠΏΡΠΎΠ΄ΡΠΊΡΡΡ ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΠΊΡΠΌ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ:
$prod = $factProd->create();
$prod->setAttributeSetId(4);
$prod->setTypeId('simple');
$prod->setSku($sku);
$prod->setName($name);
$prod->setPrice($price);
$repoProd->save($prod);
ΠΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Ρ Π°ΡΡΠΈΠ±ΡΡΠΈ varchar Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° (catalog_product_entity_varchar
), ΡΠ΅Π½Π° - Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° catalog_product_entity_decimal
. ΠΡΠ΅Π΄ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΅ ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½Π°ΡΠ° Π²ΠΈΡΡΠΈΠ½Π° Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ:
/** @var MagentoStoreModelStoreManagerInterface $manStore */
$manStore->setCurrentStore(0);
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Magento Π΅ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΠ²ΠΈΠ΅. EAV ΠΌΠΎΠ΄Π΅Π» Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ (Π²ΠΈΠΆΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° eav_entity_type
) Π΅ Π΅Π΄Π½Π° ΠΎΡ ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΡΠ°Π·ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°. ΠΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΊΡΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²ΠΈΡ ΠΌΠΎΠ΄Π΅Π»:
$prodEntity->setData('description', $desc);
$prodEntity->setData('short_description', $desc_short);
// ΠΈΠ»ΠΈ
$prodEntity->setDescription($desc);
$prodEntity->setShortDescription($desc_short);
ΠΈ ΠΏΡΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° ΡΡΠ΅Π· ΡΠ΅ΠΏΠΎ ΠΎΠ±Π΅ΠΊΡΠ°:
$repoProd->save($prod);
Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ ΡΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈ Π² ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.
ΠΠ°Π½Π½ΠΈ Π·Π° ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ°
Π‘ ΠΏΡΠΎΡΡΠΈ Π΄ΡΠΌΠΈ - ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡ Π½Π° ΡΠΊΠ»Π°Π΄. Π Magento 2.3 ΡΡΡΡΠΊΡΡΡΠΈΡΠ΅ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΠΏΠΈΡΠ²Π°Ρ ΡΠΎΡΠΌΠ°ΡΠ° Π·Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ°, ΡΠ°
/** @var MagentoCatalogModelProduct $prodEntity */
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
$inventory = [
'is_in_stock' => true,
'qty' => 1234
];
$prodEntity->setData('quantity_and_stock_status', $inventory);
$repoProd->save($prodEntity);
Π‘ΡΠ΅Π΄ΡΡΠ²Π°
ΠΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΌΠ΅Π΄ΠΈΠΉΠ½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡ Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½ (e-commerce) ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΎΡ ΠΌΠ΅Π΄ΠΈΠΉΠ½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΡΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡ Π·Π° ΡΠ»ΡΠΆΠΈΡΠ΅Π» Π²ΡΠ² Π²ΡΡΡΠ΅ΡΠ½Π° ΡΡΠ΅ΡΠΎΠ²ΠΎΠ΄Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° (ERP). Π ΠΏΡΡΠ²ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π»ΠΈΡΠ΅ Π² Π»ΠΈΡΠ΅; Π²ΡΠ² Π²ΡΠΎΡΠΈΡ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° Π΄Π°Π΄Π΅ΡΠ΅ ΠΎΠ±ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° Π·Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΏΡΠ΅Ρ
Π²ΡΡΠ»ΡΠ½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ½Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡ Π΅ Π΄ΠΎΡΡΠ° ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΎ ΡΠ²Π»Π΅Π½ΠΈΠ΅. case
ΠΏΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ.
ΠΠΎΠ³Π°ΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π· Π°Π΄ΠΌΠΈΠ½ ΠΏΠ°Π½Π΅Π»Π°, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΡΡΠ²ΠΎ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π° Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅Π½Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ (./pub/media/tmp/catalog/product
) ΠΈ ΡΠ°ΠΌΠΎ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ ΠΏΡΠΎΠ΄ΡΠΊΡΡΡ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π° Π² ΠΌΠ΅Π΄ΠΈΠΉΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ (./pub/media/catalog/product
). ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΠΏΡΠ΅Π· Π°Π΄ΠΌΠΈΠ½ ΠΏΠ°Π½Π΅Π»Π°, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΡΠ°Π³Π²Π° image
, small_image
, thumbnail
, swatch_image
.
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
/** @var MagentoCatalogModelProductGalleryCreateHandler $hndlGalleryCreate */
/* $imagePath = '/path/to/file.png'; $imagePathRelative = '/f/i/file.png' */
$imagePathRelative = $this->imagePlaceToTmpMedia($imagePath);
/* reload product with gallery data */
$product = $repoProd->get($sku);
/* add image to product's gallery */
$gallery['images'][] = [
'file' => $imagePathRelative,
'media_type' => 'image'
'label' => ''
];
$product->setData('media_gallery', $gallery);
/* set usage areas */
$product->setData('image', $imagePathRelative);
$product->setData('small_image', $imagePathRelative);
$product->setData('thumbnail', $imagePathRelative);
$product->setData('swatch_image', $imagePathRelative);
/* create product's gallery */
$hndlGalleryCreate->execute($product);
ΠΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° ΠΌΠ΅Π΄ΠΈΡΡΠ° ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° ΡΠ°ΠΌΠΎ ΡΠ»Π΅Π΄ ΠΏΡΡΠ²ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΈ ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΌΡ ΠΎΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ. Π ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° label
ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π·Π°ΠΏΠΈΡ ΠΊΡΠΌ ΠΌΠ΅Π΄ΠΈΠΉΠ½Π°ΡΠ° Π³Π°Π»Π΅ΡΠΈΡ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° (Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Undefined index: label in .../module-catalog/Model/Product/Gallery/CreateHandler.php on line 516
).
ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ
Π§Π΅ΡΡΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉΠ½Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π½Π° ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠ»ΠΈ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ Π² ΡΡΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ. Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈΡΠ΅ Π·Π° ΠΌΠΈΠ³ΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ Π² ΡΡΡ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΊΡΠΎΡΠΈ. Π ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΠΏΡΠΈΠ΄ΡΡΠΆΠ°ΠΌ ΠΊΡΠΌ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
- backend ΠΈ store ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈΡΠ΅ ΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π°Ρ ΠΏΠΎ ΠΈΠΌΠ΅;
- Π°ΠΊΠΎ ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π½Π΅ Π΅ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°, ΡΠΎΠ³Π°Π²Π° ΡΡ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΏΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ (
Default Category
) ΠΈ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½ΠΎΡΠΎ ΠΌΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π½Π° ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΡΡΡΠ½ΠΎ; - ΠΏΡΠΎΠ΄ΡΠΊΡ ΡΠ΅ ΠΏΡΠΈΡΠΈΡΠ»ΡΠ²Π° ΠΊΡΠΌ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΡΠ°ΠΌΠΎ ΠΊΠΎΠ³Π°ΡΠΎ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° (ΠΏΡΡΠ²ΠΈ ΠΈΠΌΠΏΠΎΡΡ);
ΠΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° Π΅ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° catalog_category_entity
(ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈΡΠ΅). Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Π² Magento:
/** @var MagentoCatalogApiDataCategoryInterfaceFactory $factCat */
/** @var MagentoCatalogApiCategoryRepositoryInterface $repoCat */
$cat = $factCat->create();
$cat->setName($name);
$cat->setIsActive(true);
$repoCat->save($cat);
Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΊΡΠΌ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ID Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° ΠΈ SKU Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ°:
/** @var MagentoCatalogModelCategoryProductLinkFactory $factCatProdLink */
/** @var MagentoCatalogApiCategoryLinkRepositoryInterface $repoCatLink */
$link = $factCatProdLink->create();
$link->setCategoryId($catMageId);
$link->setSku($prodSku);
$repoCatLink->save($link);
ΠΠ±ΡΠΎ
ΠΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΎ ΠΊΡΠΌ Magento 2 Π΅ Π΄ΠΎΡΡΠ° Π»Π΅ΡΠ½ΠΎ. ΠΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Ρ
Π²ΡΠΈΡΠΊΠΎ ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅ Π² Π΄Π΅ΠΌΠΎ ΠΌΠΎΠ΄ΡΠ» βfl32:import:prod
, ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅, ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² JSON ΡΠ°ΠΉΠ»Π° "
[
{
"sku": "...",
"name": "...",
"desc": "...",
"desc_short": "...",
"price": ...,
"qty": ...,
"categories": ["..."],
"image_path": "..."
}
]
Π‘Π½ΠΈΠΌΠΊΠΈ Π·Π° Π²Π½ΠΎΡ ΠΈΠΌΠ° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ./etc/data/img
.
ΠΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° 10 ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Ρ ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π΅ ΠΎΠΊΠΎΠ»ΠΎ 10 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π½Π° ΠΌΠΎΡ Π»Π°ΠΏΡΠΎΠΏ. ΠΠΊΠΎ ΡΠ°Π·Π²ΠΈΠ΅ΠΌ ΡΠ°Π·ΠΈ ΠΈΠ΄Π΅Ρ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ, Π»Π΅ΡΠ½ΠΎ Π΅ Π΄Π° ΡΡΠΈΠ³Π½Π΅ΠΌ Π΄ΠΎ ΠΈΠ·Π²ΠΎΠ΄Π°, ΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 3600 ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½ΠΈ Π½Π° ΡΠ°Ρ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠ½Π΅ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 100 ΡΠ°ΡΠ° Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° 30K ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΠ°ΠΌΡΠ½Π°ΡΠ° Π½Π° Π»Π°ΠΏΡΠΎΠΏ ΡΡΡ ΡΡΡΠ²ΡΡ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄ΠΎΠ½ΡΠΊΡΠ΄Π΅ Π΄Π° ΠΈΠ·Π³Π»Π°Π΄ΠΈΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°. ΠΠΎΠΆΠ΅ Π±ΠΈ Π΄ΠΎΡΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΡΠΈ. ΠΠΎ Π½Π΅ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΡΡΠΈ. ΠΠΎΠΆΠ΅ Π±ΠΈ ΡΠ°Π·ΠΈ Π±ΡΡΠ·ΠΈΠ½Π° ΠΈ ΠΌΡΠ΄Π½ΠΎΡΡ Π΄ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΡΡΠ΅ΠΏΠ΅Π½ Π΅ Π΅Π΄Π½Π° ΠΎΡ ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅ Π·Π° Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π Π°Π΄ΠΈΠΊΠ°Π»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²Π»ΠΈΠ·Π°Π½Π΅ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, Π½ΠΎ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π²ΡΠΈΡΠΊΠΈ βΠ±Π»Π°Π³ΠΈΠ½ΠΈβ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡΠ° Π½Π° Magento ΡΠ΅ Π³ΡΠ±ΡΡ - ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΎ βΠ½Π°ΠΏΡΠ΅Π΄Π½Π°Π»ΠΎβ ΡΠ°ΠΌΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΡΠΈ Π·Π°ΡΠ»ΡΠΆΠ°Π²Π°. ΠΠΊΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ, ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΠΈΡΠ°Π½Π΅ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com