Magento ΡΠ²Π»ΡΠ΅ΡΡΡ e-commerce ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, Ρ.Π΅. Π±ΠΎΠ»ΡΡΠ΅ Π½Π°ΡΠ΅Π»Π΅Π½ΠΎ Π½Π° ΠΏΡΠΎΠ΄Π°ΠΆΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ², ΡΠ΅ΠΌ Π½Π° ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΎΠ΄Π°ΠΆΠ°ΠΌ ΡΠΊΠ»Π°Π΄ΡΠΊΠΎΠΉ, Π»ΠΎΠ³ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ»ΠΈ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠΉ ΡΡΡΡ. ΠΠ»Ρ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ERP-ΡΠΈΡΡΠ΅ΠΌΡ). ΠΠΎΡΡΠΎΠΌΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΡΠΎ Π² ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Magento Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π·Π°Π΄Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Ρ ΡΡΠΈΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ 1Π‘).
ΠΠΎ Π±ΠΎΠ»ΡΡΠΎΠΌΡ ΡΡΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ:
- ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ (ΠΏΡΠΎΠ΄ΡΠΊΡΡ, ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ);
- ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ (ΠΎΡΡΠ°ΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π½Π° ΡΠΊΠ»Π°Π΄Π°Ρ ΠΈ ΡΠ΅Π½Ρ);
- ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ;
- Π·Π°ΠΊΠ°Π·Π°ΠΌ;
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-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² Π½ΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ. Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ ΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡ ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ Π² Π½ΠΈΡ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠ°ΠΊΡΠΎΡΠΎΠ². Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ:
- ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ backend’Π° ΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ;
- Π΅ΡΠ»ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅Ρ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅, ΡΠΎ ΠΎΠ½Π° ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΠΎΠ΄ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ΅ΠΉ (
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 β ΠΏΡΠΈΠ΄ΡΡΡΡ Π²ΡΡ «ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ΅» Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΌΠΎΠΌΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠ½ΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠΈΡ. ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, ΡΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Ρ ΠΏΡΡΠΌΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡ Π² ΠΠ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com