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);
ΠΠ΅Π΄ΠΈΡΠΌΠΈ
ΠΠ°ΠΊΠΎ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΠ΅Π΄ΠΈΡΠΌΡΠΊΠ°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ Π²ΠΎ ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ° (Π΅-ΡΡΠ³ΠΎΠ²ΠΈΡΠ°) ββΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π° ΠΎΠ΄ ΠΌΠ΅Π΄ΠΈΡΠΌΡΠΊΠ°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΈΡΡΠΈΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ Π·Π° Π²ΡΠ°Π±ΠΎΡΠ΅Π½ Π²ΠΎ Π²Π½Π°ΡΡΠ΅ΡΠ΅Π½ ΡΠΌΠ΅ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌ (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
).
ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ
Π§Π΅ΡΡΠΎ, ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ°ΡΠ° ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° Π·Π°Π΄Π½ΠΈΠ½Π° ΠΈΠ»ΠΈ ΡΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅ Π²ΠΎ Π½ΠΈΠ² ΠΌΠΎΠΆΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π°Π°Ρ. Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈΡΠ΅ Π·Π° ΠΌΠΈΠ³ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅ Π²ΠΎ Π½ΠΈΠ² Π·Π°Π²ΠΈΡΠ°Ρ ΠΎΠ΄ ΠΌΠ½ΠΎΠ³Ρ ΡΠ°ΠΊΡΠΎΡΠΈ. ΠΠΎ ΠΎΠ²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ Π·Π°Π΄ΡΠΆΡΠ²Π°ΠΌ Π½Π° ΡΠ»Π΅Π΄Π½ΠΎΠ²ΠΎ:
- ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈΡΠ΅ Π½Π° Π·Π°Π΄Π½ΠΈΠ½Π°ΡΠ° ΠΈ ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ°ΡΠ° ΡΠ΅ ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°Π°Ρ ΠΏΠΎ ΠΈΠΌΠ΅;
- Π°ΠΊΠΎ Π΅ ΡΠ²Π΅Π·Π΅Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ° ΠΊΠΎΡΠ° Π½Π΅ Π΅ Π²ΠΎ ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ°ΡΠ°, ΡΠΎΠ³Π°Ρ ΡΠ°Π° ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ° ΠΏΠΎΠ΄ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ°ΡΠ° root (
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 ΡΠ°ΡΠ° Π·Π° ΡΠ²ΠΎΠ· Π½Π° 30 ΠΈΠ»ΡΠ°Π΄ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ. ΠΠ°ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π»Π°ΠΏΡΠΎΠΏΠΎΡ ΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΠΌΠ°Π»ΠΊΡ Π΄Π° ΡΠ° ΠΈΠ·ΠΌΠ°Π·Π½Π΅ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡΠ°ΡΠ°. ΠΠΎΠΆΠ΅Π±ΠΈ Π΄ΡΡΠΈ ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΠ°ΡΠΈ. ΠΠΎ, Π½Π΅ ΠΏΠΎ Π½Π°ΡΠ΅Π΄Π±ΠΈ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°. ΠΠΎΠΆΠ΅Π±ΠΈ ΠΎΠ²Π°Π° Π±ΡΠ·ΠΈΠ½Π° ΠΈ Π±Π°Π²Π½ΠΎΡΡ Π΅ Π΄ΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΡΡΠ΅ΠΏΠ΅Π½ Π΅Π΄Π½Π° ΠΎΠ΄ ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅ Π·Π° ΠΏΠΎΡΠ°Π²Π°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ
Π Π°Π΄ΠΈΠΊΠ°Π»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° Π±ΡΠ·ΠΈΠ½Π°ΡΠ° Π½Π° ΡΠ²ΠΎΠ· Π±ΠΈ ΠΌΠΎΠΆΠ΅Π»ΠΎ Π΄Π° Π±ΠΈΠ΄Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ Π²Π»Π΅Π· Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, Π½ΠΎ Π²ΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ ΡΠΈΡΠ΅ βΠ΄ΠΎΠ±ΡΠΈβ Π²ΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎΡΡΠ° Π½Π° Magento ΡΠ΅ ΠΈΠ·Π³ΡΠ±Π΅Π½ΠΈ - ΡΠ΅ ΠΌΠΎΡΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΓ¨ βΠ½Π°ΠΏΡΠ΅Π΄Π½ΠΎβ ΡΠ°ΠΌΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, Π²ΡΠ΅Π΄ΠΈ. ΠΠΊΠΎ ΡΡΠΏΠ΅Π΅, ΡΠ΅ Π³ΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌ ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ ΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π²ΠΎ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΡΠ°.
ΠΠ·Π²ΠΎΡ: www.habr.com