Magento 2: рдмрд╛рд╣рд░реА рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рдЖрдпрд╛рдд

Magento рдПрдХ рдИ-рдХреЙрдорд░реНрд╕ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЕрд░реНрдерд╛рдд рд╡реЗрдпрд░рд╣рд╛рдЙрд╕, рд▓реЙрдЬрд┐рд╕реНрдЯрд┐рдХреНрд╕ рдпрд╛ рдлрд╛рдЗрдиреЗрдВрд╢рд┐рдпрд▓ рдЕрдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдХреА рдмрд┐рдХреНрд░реА рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдмрд┐рдХреНрд░реА рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдЬреИрд╕реЗ рдИрдЖрд░рдкреА рд╕рд┐рд╕реНрдЯрдо) рд╕рд╛рдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдмрд╣реБрдд рдмрд╛рд░ рдореИрдЧреЗрдВрдЯреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ, рдЗрди рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреЛрд░ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 1 рд╕реА рдХреЗ рд╕рд╛рде) рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред


рджреНрд╡рд╛рд░рд╛ рдФрд░ рдмрдбрд╝реЗ рдПрдХреАрдХрд░рдг рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


  • рдХреИрдЯрд▓реЙрдЧ (рдЙрддреНрдкрд╛рдж, рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ);
  • рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдбреЗрдЯрд╛ (рдЧреЛрджрд╛рдореЛрдВ рдФрд░ рдХреАрдорддреЛрдВ рдореЗрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд╕реНрдЯреЙрдХ);
  • рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ;
  • рдЖрджреЗрд╢;

рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Magento рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА ред рдореИрдЧреЗрдВрдЯреЛ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЪрд▓реЛ рдХрд╣рддреЗ рд╣реИрдВ, рдЬрд▓реНрджреА рдирд╣реАрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ, рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдореЛ рдХреЗ рдореБрдЦреНрдп рдЪрд░рдгреЛрдВ рдХреЛ "рдХреНрд▓рд╛рд╕рд┐рдХрд▓" рддрд░реАрдХреЗ рд╕реЗ рдореИрдЧреЗрдВрдЯреЛ 2 рдореЗрдВ рдПрдХ рдЙрддреНрдкрд╛рдж рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ - рд░реЗрдкреЛ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред


рдЧреНрд░рд╛рд╣рдХ рдФрд░ рдСрд░реНрдбрд░ рдЖрдорддреМрд░ рдкрд░ рджреВрд╕рд░реА рддрд░рдл - рдореИрдЧреНрдиреЗрдЯреЛ рд╕реЗ рдмрд╛рд╣рд░реА рдИрдЖрд░рдкреА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рджреЛрд╣рд░рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЙрдирдХреЗ рд╕рд╛рде рдпрд╣ рдЖрд╕рд╛рди рд╣реИ, Magento рдХреА рддрд░рдл, рдЖрдкрдХреЛ рдмрд╕ рдЙрдкрдпреБрдХреНрдд рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ " рд╣рдорд╛рд░реА рддрд░рдл рд╕реЗ рдЧреЛрд▓рд┐рдпрд╛рдВ рдЪрд▓рд╛рдИ рдЧрдИрдВ "ред


рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд


рдлрд┐рд▓рд╣рд╛рд▓, Magento рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдлреИрдХреНрдЯрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


function __construct (\Magento\Cms\Model\BlockFactory $blockFactory) { $this->blockFactory = $blockFactory; } /** @var \Magento\Cms\Model\Block $block */ $block = $this->blockFactory->create(); 

рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд┐рдЦрдирд╛:


 function __construct (\Magento\Cms\Api\BlockRepositoryInterface $blockRepo) { $this->blockRepo = $blockRepo; } $this->blockRepo->save($block); 

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' рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрддреНрдкрд╛рдж ( type_id='simple' ), рдбрд┐рдлрд╝реЙрд▓реНрдЯ attribute_set_id=4 рдХрд╛ рдПрдХ рд╕реЗрдЯ ( type_id='simple' attribute_set_id=4 ) рддрдХ has_options рдФрд░ has_options рдФрд░ has_options рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ has_options ред рдЪреВрдВрдХрд┐ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ entity_id , created_at рдФрд░ updated_at рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдореЗрдВ рдмрд╕ рдПрдХ рдирдпрд╛ рдЙрддреНрдкрд╛рдж рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП sku рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рдХрд░рддрд╛ рд╣реВрдВ:


 /** @var \Magento\Catalog\Api\Data\ProductInterfaceFactory $factProd */ /** @var \Magento\Catalog\Api\ProductRepositoryInterface $repoProd */ /** @var \Magento\Catalog\Api\Data\ProductInterface $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 \Magento\Store\Model\StoreManagerInterface $manStore */ $manStore->setCurrentStore(0); 

рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ


Magento рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрддреНрдкрд╛рдж рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдПрдХ рдЦреБрд╢реА рд╣реИред рдХреЛрд░ рдПрдВрдЯрд┐рдЯреАрдЬ рдХреЗ рд▓рд┐рдП eav_entity_type рдбреЗрдЯрд╛ рдореЙрдбрд▓ (рджреЗрдЦреЗрдВ eav_entity_type рдЯреЗрдмрд▓) рдЗрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреА рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдмрд╕ рдЙрддреНрдкрд╛рдж рдореЙрдбрд▓ рдореЗрдВ рдЙрдЪрд┐рдд рдЧреБрдг рдЬреЛрдбрд╝реЗрдВ:


 $prodEntity->setData('description', $desc); $prodEntity->setData('short_description', $desc_short); //  $prodEntity->setDescription($desc); $prodEntity->setShortDescription($desc_short); 

рдФрд░ рд░реЗрдкреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбрд▓ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп:


 $repoProd->save($prod); 

рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдЗрдиреНрд╡реЗрдВрдЯрд░реА рдбреЗрдЯрд╛


рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ - рд╕реНрдЯреЙрдХ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдХреА рдорд╛рддреНрд░рд╛ред рдореИрдЧреЗрдВрдЯреЛ 2.3 рдореЗрдВ, рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рднрд┐рдиреНрди рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрддреНрдкрд╛рдж рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯреЙрдХ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрдард┐рди рдирд╣реАрдВ рд╣реИ:


 /** @var \Magento\Catalog\Model\Product $prodEntity */ /** @var \Magento\Catalog\Api\ProductRepositoryInterface $repoProd */ $inventory = [ 'is_in_stock' => true, 'qty' => 1234 ]; $prodEntity->setData('quantity_and_stock_status', $inventory); $repoProd->save($prodEntity); 

рдореАрдбрд┐рдпрд╛


рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╕реНрдЯреЛрд░ (рдИ-рдХреЙрдорд░реНрд╕) рдореЗрдВ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рдореАрдбрд┐рдпрд╛ рд╕рдорд░реНрдерди рдЖрдВрддрд░рд┐рдХ рд▓реЗрдЦрд╛ рдкреНрд░рдгрд╛рд▓реА (рдИрдЖрд░рдкреА) рдореЗрдВ рдПрдХ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рдореАрдбрд┐рдпрд╛ рд╕рдорд░реНрдерди рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, "рдЙрддреНрдкрд╛рдж рдХрд╛ рдЪреЗрд╣рд░рд╛" рджрд┐рдЦрд╛рдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ, рджреВрд╕рд░реЗ рдореЗрдВ - рдпрд╣ рдЙрддреНрдкрд╛рдж рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдлрд┐рд░ рднреА, рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рдЙрддреНрдкрд╛рдж рдХреА рдХрдо рд╕реЗ рдХрдо рдкреНрд░рд╛рдердорд┐рдХ рдЫрд╡рд┐ рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдПрдХ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп case ред


рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЫрд╡рд┐ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░, рдЫрд╡рд┐ рдХреЛ рдкрд╣рд▓реЗ рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (( ./pub/media/tmp/catalog/product ) рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЬрдм рдЙрддреНрдкрд╛рдж рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореАрдбрд┐рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ( ./pub/media/catalog/product )ред рд╕рд╛рде рд╣реА, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ small_image рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдЫрд╡рд┐ рдХреЛ image , small_image , thumbnail , swatch_image рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


 /** @var \Magento\Catalog\Api\ProductRepositoryInterface $repoProd */ /** @var \Magento\Catalog\Model\Product\Gallery\CreateHandler $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 рдЕрдкрд╡рд╛рдж рдорд┐рд▓рддрд╛ рд╣реИ Undefined index: label in .../module-catalog/Model/Product/Gallery/CreateHandler.php on line 516 )ред


рд╢реНрд░реЗрдгреА


рдЕрдХреНрд╕рд░ рд╕реНрдЯреЛрд░ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдФрд░ рдмреИрдХрдПрдВрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдпрд╛ рдЙрдирдореЗрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдирд┐рдпреБрдХреНрддрд┐ рдореЗрдВ рдХрд╛рдлреА рднрд┐рдиреНрдирддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдФрд░ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рд░рдгрдиреАрддрд┐рдпрд╛рдБ рдХрдИ рдХрд╛рд░рдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗ рдЪрд┐рдкрдХрддрд╛ рд╣реВрдВ:


  • рдмреИрдХрдПрдВрдб рдФрд░ рд╕реНрдЯреЛрд░ рдХреА рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рдирд╛рдо рд╕реЗ рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИрдВ;
  • рдпрджрд┐ рдПрдХ рд╢реНрд░реЗрдгреА рдЖрдпрд╛рдд рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рд╕реНрдЯреЛрд░ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рд░реВрдЯ рд╢реНрд░реЗрдгреА ( Default Category ) рдХреЗ рддрд╣рдд рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдЯреЛрд░ рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рдЗрд╕рдХреА рдЖрдЧреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
  • рдПрдХ рдЙрддреНрдкрд╛рдж рдХреЗрд╡рд▓ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рд╕реНрдЯреЛрд░ (рдкрд╣рд▓реЗ рдЖрдпрд╛рдд) рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;

рдмреЗрд╕рд┐рдХ рд╢реНрд░реЗрдгреА рдХреА рдЬрд╛рдирдХрд╛рд░реА catalog_category_entity рдЯреЗрдмрд▓ (рд╢реНрд░реЗрдгреА рд╕реВрдЪреА) рдореЗрдВ рд╣реИред Magento рдореЗрдВ рдПрдХ рд╢реНрд░реЗрдгреА рдмрдирд╛рдирд╛:


 /** @var \Magento\Catalog\Api\Data\CategoryInterfaceFactory $factCat */ /** @var \Magento\Catalog\Api\CategoryRepositoryInterface $repoCat */ $cat = $factCat->create(); $cat->setName($name); $cat->setIsActive(true); $repoCat->save($cat); 

рдЙрддреНрдкрд╛рдж рд╢реНрд░реЗрдгреА ID рдФрд░ рдЙрддреНрдкрд╛рдж SKU рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╢реНрд░реЗрдгреА рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ:


 /** @var \Magento\Catalog\Model\CategoryProductLinkFactory $factCatProdLink */ /** @var \Magento\Catalog\Api\CategoryLinkRepositoryInterface $repoCatLink */ $link = $factCatProdLink->create(); $link->setCategoryId($catMageId); $link->setSku($prodSku); $repoCatLink->save($link); 

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░


рдореИрдЧреЗрдВрдЯреЛ 2 рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдкрд╛рдж рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╕рднреА, рдореИрдВрдиреЗ рдбреЗрдореЛ рдореЙрдбреНрдпреВрд▓ " flancer32 / mage2_ext_demo_import " рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ fl32:import:prod рдореЗрдВ fl32:import:prod рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб, рдЬреЛ "/ .cc/data/products.json " JSON рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ:


 [ { "sku": "...", "name": "...", "desc": "...", "desc_short": "...", "price": ..., "qty": ..., "categories": ["..."], "image_path": "..." } ] 

рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░ ./etc/data/img рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред


рдЗрд╕ рддрд░рд╣ рд╕реЗ 10 рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рдЖрдпрд╛рдд рд╕рдордп рдореЗрд░реЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рд▓рдЧрднрдЧ 10 рд╕реЗрдХрдВрдб рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ 3,600 рдЙрддреНрдкрд╛рдж рдкреНрд░рддрд┐ рдШрдВрдЯреЗ рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ 100K рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 30 рдШрдВрдЯреЗ рдХрд╛ рд╕рдордп рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд▓реИрдкрдЯреЙрдк рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдЖрдк рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реБрдЪрд╛рд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдХрдИ рдмрд╛рд░ред рд▓реЗрдХрд┐рди рдкрд░рд┐рдорд╛рдг рдХреЗ рдЖрджреЗрд╢реЛрдВ рд╕реЗ рдирд╣реАрдВред рд╢рд╛рдпрдж рдпрд╣ рдЧрддрд┐ рдореИрдЬреЗрдВрдЯреЛ / async- рдЖрдпрд╛рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрджреНрднрд╡ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣рдж рддрдХ рд╕реБрд╕реНрддреА рд╣реИред


рдЖрдпрд╛рдд рдХреА рдЧрддрд┐ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдбрд┐рдирд▓ рдирд┐рд░реНрдгрдп рд╕реАрдзреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдЧреЗрдВрдЯреЛ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА "рдмрдиреНрд╕" рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВ - рдЖрдкрдХреЛ рдЦреБрдж рдХреЛ "рдЙрдиреНрдирдд" рд╕рдм рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рддреНрдпрдХреНрд╖ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред

Source: https://habr.com/ru/post/hi436020/


All Articles