IMagento sisisombululo se-e-commerce, okt. ijolise kakhulu ekuthengiseni iimveliso kunendawo yokugcina impahla, ulungiselelo okanye ucwangciso-mali olukhapha iintengiso. Ezinye izicelo (umzekelo, iisistim ze-ERP) zifaneleka ngcono usetyenziso olukhaphayo. Ngoko ke, ngokuphindaphindiweyo kwisenzo sokusebenzisa iMagento umsebenzi wokudibanisa ivenkile kunye nezinye iinkqubo (umzekelo, i-1C) ivela.
Ngokubanzi, udibaniso lunokuncitshiswa kukuphindwa kwedatha ngoku:
- ikhathalogu (iimveliso, iindidi);
- idatha ye-inventri (ibhalansi yemveliso kwiindawo zokugcina iimpahla kunye namaxabiso);
- abathengi;
- imiyalelo;
IMagento ibonelela ngodidi olwahlukileyo lwezinto zokuguqula idatha kwisiseko sedatha -
Abathengi kunye neeodolo zihlala ziphindaphindwa kwelinye icala - ukusuka eMagento ukuya kwiinkqubo zangaphandle ze-ERP. Ke, kulula kubo, kwicala leMagento kufuneka ukhethe idatha efanelekileyo, emva koko "iimbumbulu zaphuma ecaleni kwethuΒ«.
Imigaqo yokurekhoda idatha kwiziko ledatha
Okwangoku, ukudala izinto ezigcinwe kwisiseko sedatha ngokwenkqubo kwiMagento kwenziwa
function __construct (MagentoCmsModelBlockFactory $blockFactory) {
$this->blockFactory = $blockFactory;
}
/** @var MagentoCmsModelBlock $block */
$block = $this->blockFactory->create();
kunye nokubhalela kwiziko ledatha kwenziwa nge
function __construct (MagentoCmsApiBlockRepositoryInterface $blockRepo) {
$this->blockRepo = $blockRepo;
}
$this->blockRepo->save($block);
Indlela ethi "Factory" kunye ne "Repository" ingasetyenziselwa zonke iimodeli eziphambili kwi-domain ye-Magento 2.
Ulwazi olusisiseko lweMveliso
Ndijonge ulwakhiwo lwedatha oluhambelana noguqulelo lweMagento 2.3. Olona lwazi lusisiseko malunga nemveliso lukwitheyibhile catalog_product_entity
(ubhaliso lwemveliso):
entity_id
attribute_set_id
type_id
sku
has_options
required_options
created_at
updated_at
Ndithintelwe kudidi olunye lwemveliso (type_id='simple'
), uluhlu lweempawu zoyelelwano olungagqibekanga (attribute_set_id=4
) kwaye ungazihoyi iimpawu has_options
ΠΈ required_options
. Ukusukela iimpawu entity_id
, created_at
ΠΈ updated_at
zenziwa ngokuzenzekelayo, ke, enyanisweni, ukongeza imveliso entsha, kufuneka nje ukuseta sku
. Ndenza oku:
/** @var MagentoCatalogApiDataProductInterfaceFactory $factProd */
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
/** @var MagentoCatalogApiDataProductInterface $prod */
$prod = $factProd->create();
$prod->setAttributeSetId(4);
$prod->setTypeId('simple');
$prod->setSku($sku);
$repoProd->save($prod);
kwaye ndifumana okukhethekile:
The "Product Name" attribute value is empty. Set the attribute and try again.
Ndongeza igama lemveliso kwisicelo kwaye ndifumana umyalezo wokuba uphawu lulahlekile Price
. Emva kokongeza ixabiso, imveliso yongezwa kwisiseko sedatha:
$prod = $factProd->create();
$prod->setAttributeSetId(4);
$prod->setTypeId('simple');
$prod->setSku($sku);
$prod->setName($name);
$prod->setPrice($price);
$repoProd->save($prod);
Igama lemveliso ligcinwa kwitheyibhile yophawu lwemveliso varchar (catalog_product_entity_varchar
), ixabiso - etafileni catalog_product_entity_decimal
. Phambi kokuba wongeze imveliso, kuyacetyiswa ukuba ubonise ngokucacileyo ukuba sisebenzisa i-storefront solawulo ukungenisa idatha:
/** @var MagentoStoreModelStoreManagerInterface $manStore */
$manStore->setCurrentStore(0);
Iimpawu ezongezelelweyo
Ukusetyenzwa kweempawu ezongezelelweyo zemveliso usebenzisa iMagento kuluyolo. Imodeli yedatha ye-EAV kumaziko aphambili (jonga itheyibhile eav_entity_type
) yenye yezinto eziphambili zeli qonga. Songeza ngokulula iimpawu ezifanelekileyo kwimodeli yemveliso:
$prodEntity->setData('description', $desc);
$prodEntity->setData('short_description', $desc_short);
// ΠΈΠ»ΠΈ
$prodEntity->setDescription($desc);
$prodEntity->setShortDescription($desc_short);
kwaye xa ugcina imodeli ngendlela yerepo:
$repoProd->save($prod);
iimpawu ezongezelelweyo nazo ziya kugcinwa kwiitheyibhile zedatha ehambelanayo.
Idatha yoluhlu
Ngamagama alula - isixa semveliso kwisitokhwe. Kwi-Magento 2.3, izakhiwo ezikwisiseko sedatha ezichaza ifomathi yokugcina idatha ye-inventri
/** @var MagentoCatalogModelProduct $prodEntity */
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
$inventory = [
'is_in_stock' => true,
'qty' => 1234
];
$prodEntity->setData('quantity_and_stock_status', $inventory);
$repoProd->save($prodEntity);
Imidiya
Njengomthetho, inkxaso yeendaba kwimveliso yomthengi kwivenkile (i-e-yorhwebo) ihluke kwinkxaso yemidiya yemveliso efanayo kumqeshwa kwinkqubo yokugcinwa kwengxelo yangaphakathi (ERP). Kwimeko yokuqala, kuyacetyiswa ukuba ubonise imveliso ubuso ngobuso; okwesibini, kwanele ukunika umbono jikelele wemveliso. Nangona kunjalo, ukuhambisa ubuncinci umfanekiso osisiseko wemveliso kuyinto eqhelekileyo. case
xa ungenisa idatha.
Xa wongeza umfanekiso ngendawo yolawulo, umfanekiso ugcinwa kuqala kulawulo lwethutyana (./pub/media/tmp/catalog/product
) kwaye kuphela xa ugcino lwemveliso lusiwa kulawulo lwemidiya (./pub/media/catalog/product
). Kwakhona, xa wongezwa ngephaneli yolawulo, umfanekiso uphawulwe 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);
Ngesizathu esithile, imidiya idityaniswe kuphela emva kokugcina imveliso kunye nokuyibuyisela kwindawo yokugcina kwakhona. Kwaye kufuneka uchaze uphawu label
xa ufaka ingeniso kwigalari yemidiya yemveliso (ngaphandle koko sifumana ngaphandle Undefined index: label in .../module-catalog/Model/Product/Gallery/CreateHandler.php on line 516
).
Izigaba
Ngokuqhelekileyo, udidi lwesakhiwo sevenkile kunye nesicelo se-backend okanye ukubekwa kweemveliso kuzo kunokwahluka kakhulu. Amaqhinga okufuduka kwedatha malunga neendidi kunye neemveliso ngaphakathi kwazo zixhomekeke kwizinto ezininzi. Kulo mzekelo ndinamathela koku kulandelayo:
- umva kunye neendidi zevenkile zithelekiswa namagama;
- ukuba udidi luthathwa ngaphandle olungekho evenkileni, ngoko lwenziwa phantsi koluhlu lweengcambu (
Default Category
) kunye nokumiswa kwayo ngakumbi kwikhathalogu yesitora kuthathwa ngesandla; - imveliso yabelwe udidi kuphela xa yenziwe kwivenkile (ukungenisa okokuqala);
Ulwazi olusisiseko malunga nodidi lukwitheyibhile catalog_category_entity
(ikhathalogu yamacandelo). Ukudala udidi kwiMagento:
/** @var MagentoCatalogApiDataCategoryInterfaceFactory $factCat */
/** @var MagentoCatalogApiCategoryRepositoryInterface $repoCat */
$cat = $factCat->create();
$cat->setName($name);
$cat->setIsActive(true);
$repoCat->save($cat);
Ukudibanisa imveliso kwicandelo kuqhutywa kusetyenziswa i-ID yodidi kunye nemveliso ye-SKU:
/** @var MagentoCatalogModelCategoryProductLinkFactory $factCatProdLink */
/** @var MagentoCatalogApiCategoryLinkRepositoryInterface $repoCatLink */
$link = $factCatProdLink->create();
$link->setCategoryId($catMageId);
$link->setSku($prodSku);
$repoCatLink->save($link);
Iyonke
Ikhowudi yokubhala ukongeza imveliso ngokwenkqubo kwiMagento 2 kulula kakhulu. Ndidibanise yonke into echazwe ngasentla kwimodyuli yedemo "fl32:import:prod
, ekhuphela ngaphandle iimveliso ezichazwe kwifayile ye JSON "
[
{
"sku": "...",
"name": "...",
"desc": "...",
"desc_short": "...",
"price": ...,
"qty": ...,
"categories": ["..."],
"image_path": "..."
}
]
Imifanekiso yokungenisa ikuluhlu ./etc/data/img
.
Ixesha lokungenisa iimveliso ezili-10 usebenzisa le ndlela malunga nemizuzwana ye-10 kwi-laptop yam. Ukuba siphuhlisa le ngcamango ngakumbi, kulula ukufikelela kwisigqibo sokuba malunga neemveliso ze-3600 zingangeniswa ngeyure, kwaye kungathatha iiyure ezingama-100 ukungenisa iimveliso ze-30K. Ukutshintsha ilaptop ngeseva kukuvumela ukuba ugudise imeko ngandlelβ ithile. Mhlawumbi namaxesha amaninzi. Kodwa kungekhona ngemiyalelo yobukhulu. Mhlawumbi esi santya kunye nokucotha kwinqanaba elithile sesinye sezizathu zokuvela kweprojekthi
Isisombululo esinamandla sokunyusa isantya sokungenisa impahla sinokungena ngokuthe ngqo kwisiseko sedatha, kodwa kule meko zonke "izinto ezilungileyo" malunga nokwandiswa kweMagento zilahlekile - kuya kufuneka wenze yonke into "ukuqhubela phambili" ngokwakho. Nangona kunjalo, kufanelekile. Ukuba iyasebenza, ndiya kuqwalasela indlela yokubhala ngokuthe ngqo kwi-database kwinqaku elilandelayo.
umthombo: www.habr.com