ʻO Magento kahi hopena e-commerce, ʻo ia hoʻi. ʻoi aku ka manaʻo o ke kūʻai aku ʻana i nā huahana ma mua o ka hale kūʻai, logistic a i ʻole ka helu kālā e hele pū ana me nā kūʻai. ʻOi aku ka maikaʻi o nā noi ʻē aʻe (no ka laʻana, nā ʻōnaehana ERP) no nā noi e pili ana. No laila, pinepine i ka hoʻomaʻamaʻa ʻana i ka hoʻohana ʻana iā Magento ka hana o ka hoʻohui ʻana i kahi hale kūʻai me kēia mau ʻōnaehana ʻē aʻe (no ka laʻana, 1C).
Ma ke ʻano nui, hiki ke hoʻemi ʻia ka hoʻohui ʻana i ka hoʻopili hou ʻana i ka ʻikepili e:
- papa inoa (nā huahana, nā ʻāpana);
- ʻikepili waihona (nā kaulike huahana ma nā hale kūʻai a me nā kumukūʻai);
- nā mea kūʻai aku;
- kauoha;
Hāʻawi ʻo Magento i kahi papa ʻokoʻa o nā mea no ka hoʻopunipuni ʻana i ka ʻikepili i ka waihona -
Hoʻopili pinepine ʻia nā mea kūʻai aku a me nā kauoha ma ke ala ʻē aʻe - mai Magento a i nā ʻōnaehana ERP waho. No laila, ʻoi aku ka maʻalahi me lākou, ma ka ʻaoʻao Magento pono ʻoe e koho i ka ʻikepili kūpono, a laila "lele mai na poka mai ko makou aoao aku".
Nā loina o ka hoʻopaʻa ʻana i ka ʻikepili i loko o kahi waihona
I kēia manawa, hana ʻia ka hana ʻana i nā mea i mālama ʻia ma ka ʻikepili programmatically ma Magento
function __construct (MagentoCmsModelBlockFactory $blockFactory) {
$this->blockFactory = $blockFactory;
}
/** @var MagentoCmsModelBlock $block */
$block = $this->blockFactory->create();
a kākau ʻia i ka waihona ma o
function __construct (MagentoCmsApiBlockRepositoryInterface $blockRepo) {
$this->blockRepo = $blockRepo;
}
$this->blockRepo->save($block);
Hiki ke hoʻohana ʻia ke ala "Factory" a me "Repository" no nā hiʻohiʻona nui a pau i ka domain Magento 2.
ʻIke Huahana Kumu
Ke nānā nei au i kahi hoʻolālā ʻikepili e pili ana i ka mana Magento 2.3. Aia ka ʻike maʻamau e pili ana i ka huahana ma ka papaʻaina catalog_product_entity
(kāinoa huahana):
entity_id
attribute_set_id
type_id
sku
has_options
required_options
created_at
updated_at
Ua kaupalena au i hoʻokahi ʻano huahana (type_id='simple'
), he pūʻulu o nā ʻano paʻamau (attribute_set_id=4
) a haʻalele i nā ʻano has_options
и required_options
. Mai nā hiʻohiʻona entity_id
, created_at
и updated_at
hana ʻia, a laila, ʻoiaʻiʻo, e hoʻohui i kahi huahana hou, pono mākou e hoʻonohonoho sku
. Hana wau i kēia:
/** @var MagentoCatalogApiDataProductInterfaceFactory $factProd */
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
/** @var MagentoCatalogApiDataProductInterface $prod */
$prod = $factProd->create();
$prod->setAttributeSetId(4);
$prod->setTypeId('simple');
$prod->setSku($sku);
$repoProd->save($prod);
a loaʻa iaʻu kahi ʻokoʻa:
The "Product Name" attribute value is empty. Set the attribute and try again.
Hoʻohui au i ka inoa huahana i ka noi a loaʻa i kahi memo ua nalowale ke ʻano Price
. Ma hope o ka hoʻohui ʻana i ke kumukūʻai, hoʻohui ʻia ka huahana i ka waihona:
$prod = $factProd->create();
$prod->setAttributeSetId(4);
$prod->setTypeId('simple');
$prod->setSku($sku);
$prod->setName($name);
$prod->setPrice($price);
$repoProd->save($prod);
Hoʻopaʻa ʻia ka inoa huahana ma ka pākaukau ʻano huahana varchar (catalog_product_entity_varchar
), kumu kūʻai - ma ka papaʻaina catalog_product_entity_decimal
. Ma mua o ka hoʻohui ʻana i kahi huahana, pono e hōʻike maopopo ke hoʻohana nei mākou i ka hale kūʻai hoʻokele e hoʻokomo i ka ʻikepili:
/** @var MagentoStoreModelStoreManagerInterface $manStore */
$manStore->setCurrentStore(0);
Nā mea hou aku
He leʻaleʻa ka hana ʻana i nā ʻano huahana hou me ka hoʻohana ʻana iā Magento. Ke kumu hoʻohālike EAV no nā mea nui (e nānā i ka papa eav_entity_type
) ʻo ia kekahi o nā hiʻohiʻona nui o kēia paepae. Hoʻohui wale mākou i nā ʻano kūpono i ke ʻano huahana:
$prodEntity->setData('description', $desc);
$prodEntity->setData('short_description', $desc_short);
// или
$prodEntity->setDescription($desc);
$prodEntity->setShortDescription($desc_short);
a i ka mālama ʻana i ke kumu hoʻohālike ma o ka mea repo:
$repoProd->save($prod);
e mālama ʻia nā ʻano ʻē aʻe i loko o nā papa ʻikepili pili.
ʻikepili waihona
Ma nā'ōlelo maʻalahi - ka nui o ka huahana i ka waihona. Ma Magento 2.3, nā hale i loko o ka waihona e wehewehe ana i ke ʻano no ka mālama ʻana i ka ʻikepili waihona
/** @var MagentoCatalogModelProduct $prodEntity */
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
$inventory = [
'is_in_stock' => true,
'qty' => 1234
];
$prodEntity->setData('quantity_and_stock_status', $inventory);
$repoProd->save($prodEntity);
Lāpaho
E like me ke kānāwai, ʻokoʻa ke kākoʻo media no kahi huahana no ka mea kūʻai aku ma kahi hale kūʻai (e-commerce) mai ke kākoʻo media no ka huahana like no kahi limahana ma kahi ʻōnaehana helu kūloko (ERP). I ka hihia mua, pono e hōʻike i ka huahana he alo a he alo; i ka lua, ua lawa ia e hāʻawi i kahi manaʻo nui o ka huahana. Eia naʻe, maʻa mau ka hoʻoili ʻana i ke kiʻi mua o kahi huahana. case
i ka lawe ʻana i ka ʻikepili.
Ke hoʻohui nei i kahi kiʻi ma o ka admin panel, mālama mua ʻia ke kiʻi i loko o kahi papa kuhikuhi manawa (./pub/media/tmp/catalog/product
) a ke hoʻoneʻe ʻia ka huahana i ka papa kuhikuhi media (./pub/media/catalog/product
). Eia kekahi, ke hoʻohui ʻia ma o ka admin panel, ua kau ʻia ke kiʻi 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);
No kekahi kumu, pili ka media ma hope o ka mālama mua ʻana i ka huahana a kiʻi hou mai ka waihona. A pono ʻoe e kuhikuhi i ke ʻano label
i ka hoʻohui ʻana i kahi komo i ka hale kiʻi media huahana (inā ʻaʻole e loaʻa iā mākou kahi ʻokoʻa Undefined index: label in .../module-catalog/Model/Product/Gallery/CreateHandler.php on line 516
).
Māhele
ʻO ka manawa pinepine, hiki ke ʻokoʻa ke ʻano o ka hale kūʻai a me ka noi hope a i ʻole ke kau ʻana o nā huahana i loko. ʻO nā hoʻolālā no ka neʻe ʻana i ka ʻikepili e pili ana i nā ʻāpana a me nā huahana i loko o ia mau mea pili i nā kumu he nui. Ma kēia hiʻohiʻona, pili wau i kēia:
- hoʻohālikelike ʻia nā ʻano o ka backend a me ka hale kūʻai ma ka inoa;
- inā lawe ʻia kahi ʻāpana ʻaʻole i loko o ka hale kūʻai, a laila hana ʻia ma lalo o ke kumu kumu (
Default Category
) a ua manaʻo lima ʻia kona hoʻonoho ʻana ma ka waihona hale kūʻai; - hāʻawi ʻia kahi huahana i kahi ʻāpana wale nō ke hana ʻia i loko o ka hale kūʻai (hoʻokomo mua ʻia);
Aia ka ʻike kumu e pili ana i ka ʻāpana i ka pākaukau catalog_category_entity
(catalog of categories). Ke hana ʻana i kahi ʻano ma Magento:
/** @var MagentoCatalogApiDataCategoryInterfaceFactory $factCat */
/** @var MagentoCatalogApiCategoryRepositoryInterface $repoCat */
$cat = $factCat->create();
$cat->setName($name);
$cat->setIsActive(true);
$repoCat->save($cat);
Hoʻopili ʻia kahi huahana i kahi ʻāpana me ka hoʻohana ʻana i ka ID waeʻano a me ka SKU huahana:
/** @var MagentoCatalogModelCategoryProductLinkFactory $factCatProdLink */
/** @var MagentoCatalogApiCategoryLinkRepositoryInterface $repoCatLink */
$link = $factCatProdLink->create();
$link->setCategoryId($catMageId);
$link->setSku($prodSku);
$repoCatLink->save($link);
Hōʻuluʻulu
Maʻalahi loa ke kākau ʻana i ka code e hoʻohui i kahi huahana programmatically iā Magento 2. Ua hoʻohui au i nā mea a pau i ʻōlelo ʻia ma luna nei i kahi module demo "fl32:import:prod
, ka mea e lawe mai i nā huahana i wehewehe ʻia ma ka faila JSON "
[
{
"sku": "...",
"name": "...",
"desc": "...",
"desc_short": "...",
"price": ...,
"qty": ...,
"categories": ["..."],
"image_path": "..."
}
]
Aia nā kiʻi no ka lawe ʻia ʻana mai ma ka waihona ./etc/data/img
.
ʻO ka manawa e hoʻokomo ai i nā huahana 10 e hoʻohana ana i kēia ʻano ma kahi o 10 kekona ma kaʻu kamepiula. Inā mākou e hoʻomohala hou i kēia manaʻo, hiki ke maʻalahi i ka hopena ma kahi o 3600 mau huahana hiki ke lawe ʻia i kēlā me kēia hola, a hiki ke lawe ma kahi o 100 mau hola e lawe mai i nā huahana 30K. ʻO ka hoʻololi ʻana i kahi kamepiula me kahi kikowaena hiki iā ʻoe ke hoʻomaʻemaʻe i ke kūlana. Malia paha i kekahi mau manawa. ʻAʻole naʻe ma ke kauoha o ka nui. ʻO kēia wikiwiki a me ka lohi paha kekahi o nā kumu o ka puka ʻana o ka papahana
ʻO kahi hopena radical e hoʻonui i ka wikiwiki o ka lawe ʻana mai hiki ke komo pololei i ka waihona, akā i kēia hihia ua nalowale nā "maikaʻi" āpau e pili ana i ka hoʻonui ʻia o Magento - pono ʻoe e hana i nā mea āpau "holomua" iā ʻoe iho. Eia naʻe, pono ia. Inā hana ia, e noʻonoʻo wau i ke ala me ke kākau pololei ʻana i ka waihona ma ka ʻatikala aʻe.
Source: www.habr.com