Tha Magento na fhuasgladh e-malairt, i.e. ag amas nas motha air a bhith a’ reic thoraidhean na air bathar-thaighean, loidsistigs no cunntasachd ionmhais an cois reic. Tha tagraidhean eile (mar eisimpleir, siostaman ERP) nas freagarraiche airson tagraidhean nan cois. Mar sin, gu math tric ann an cleachdadh a bhith a 'cleachdadh Magento an obair a bhith ag amalachadh stòr leis na siostaman eile (mar eisimpleir, 1C).
San fharsaingeachd, faodar amalachadh a lughdachadh gu ath-riochdachadh dàta le bhith:
- catalog (bathar, roinnean);
- dàta clàr-seilbhe (cothromachadh toraidh ann an taighean-bathair agus prìsean);
- luchd-dèiligidh;
- òrduighean;
Tha Magento a’ tabhann clas air leth de stuthan airson a bhith a’ làimhseachadh dàta san stòr-dàta -
Mar as trice bidh luchd-ceannach agus òrdughan air an ath-aithris an taobh eile - bho Magento gu siostaman ERP taobh a-muigh. Mar sin, tha e nas sìmplidh leotha, air taobh Magento feumaidh tu dìreach an dàta iomchaidh a thaghadh, agus an uairsin “chaidh peilearan a mach o'n taobh".
Prionnsabalan clàradh dàta ann an stòr-dàta
Aig an àm seo, thathas a’ cruthachadh stuthan a chaidh a shàbhaladh san stòr-dàta gu prògramach ann am Magento
function __construct (MagentoCmsModelBlockFactory $blockFactory) {
$this->blockFactory = $blockFactory;
}
/** @var MagentoCmsModelBlock $block */
$block = $this->blockFactory->create();
agus thathar a’ sgrìobhadh chun stòr-dàta troimhe
function __construct (MagentoCmsApiBlockRepositoryInterface $blockRepo) {
$this->blockRepo = $blockRepo;
}
$this->blockRepo->save($block);
Faodar an dòigh-obrach "Factory" agus "Repository" a chleachdadh airson a h-uile prìomh mhodail ann an raon Magento 2.
Fiosrachadh toraidh bunaiteach
Tha mi a’ coimhead air structar dàta a tha a rèir dreach Magento 2.3. Tha am fiosrachadh as bunaitiche mun toradh anns a’ chlàr catalog_product_entity
(clàr toraidh):
entity_id
attribute_set_id
type_id
sku
has_options
required_options
created_at
updated_at
Tha mi cuingealaichte ri aon seòrsa toraidh (type_id='simple'
), seata de fheartan bunaiteach (attribute_set_id=4
) agus seachain buadhan has_options
и required_options
. Air sgàth na feartan entity_id
, created_at
и updated_at
air an gineadh gu fèin-ghluasadach, an uairsin, gu dearbh, gus toradh ùr a chuir ris, feumaidh sinn dìreach suidheachadh sku
. Bidh mi a' dèanamh seo:
/** @var MagentoCatalogApiDataProductInterfaceFactory $factProd */
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
/** @var MagentoCatalogApiDataProductInterface $prod */
$prod = $factProd->create();
$prod->setAttributeSetId(4);
$prod->setTypeId('simple');
$prod->setSku($sku);
$repoProd->save($prod);
agus gheibh mi eisgeachd:
The "Product Name" attribute value is empty. Set the attribute and try again.
Cuiridh mi ainm an toraidh ris an iarrtas agus gheibh mi teachdaireachd gu bheil am feart a dhìth Price
. Às deidh a ’phrìs a chuir ris, thèid an toradh a chuir ris an stòr-dàta:
$prod = $factProd->create();
$prod->setAttributeSetId(4);
$prod->setTypeId('simple');
$prod->setSku($sku);
$prod->setName($name);
$prod->setPrice($price);
$repoProd->save($prod);
Tha ainm an toraidh air a stòradh ann an clàr buadhan varchar toraidh (catalog_product_entity_varchar
), prìs - anns a 'chlàr catalog_product_entity_decimal
. Mus cuir thu toradh ris, tha e ciallach innse gu soilleir gu bheil sinn a’ cleachdadh an aghaidh stòr rianachd gus dàta a thoirt a-steach:
/** @var MagentoStoreModelStoreManagerInterface $manStore */
$manStore->setCurrentStore(0);
Feartan a bharrachd
Tha e na thoileachas a bhith a’ giullachd buadhan toraidh a bharrachd a’ cleachdadh Magento. Modail dàta EAV airson prìomh bhuidhnean (faic an clàr eav_entity_type
) aon de na prìomh fheartan den àrd-ùrlar seo. Bidh sinn dìreach a’ cur na buadhan iomchaidh ris a’ mhodail toraidh:
$prodEntity->setData('description', $desc);
$prodEntity->setData('short_description', $desc_short);
// или
$prodEntity->setDescription($desc);
$prodEntity->setShortDescription($desc_short);
agus nuair a shàbhalas tu am modail tron rud repo:
$repoProd->save($prod);
thèid buadhan a bharrachd a stòradh anns na clàran stòr-dàta co-fhreagarrach.
Dàta clàr-stuthan
Ann an teirmean sìmplidh - an àireamh de thoraidhean ann an stoc. Ann am Magento 2.3, tha structaran anns an stòr-dàta a tha a’ toirt cunntas air a’ chruth airson dàta tasgaidh a stòradh
/** @var MagentoCatalogModelProduct $prodEntity */
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
$inventory = [
'is_in_stock' => true,
'qty' => 1234
];
$prodEntity->setData('quantity_and_stock_status', $inventory);
$repoProd->save($prodEntity);
Meadhanan
Mar riaghailt, tha taic mheadhanan airson toradh airson neach-dèiligidh ann an stòr (e-malairt) eadar-dhealaichte bho thaic mheadhanan airson an aon toradh airson neach-obrach ann an siostam cunntasachd a-staigh (ERP). Anns a 'chiad chùis, tha e ciallach an toradh a shealltainn aghaidh ri aghaidh; anns an dàrna fear, tha e gu leòr airson beachd coitcheann a thoirt air an toradh. Ach, tha gluasad co-dhiù prìomh ìomhaigh toraidh gu math cumanta. case
nuair a thathar a’ toirt a-steach dàta.
Nuair a chuireas tu ìomhaigh tron phannal rianachd, thèid an ìomhaigh a shàbhaladh an toiseach ann an eòlaire sealach (./pub/media/tmp/catalog/product
) agus dìreach nuair a thèid an toradh a shàbhaladh thèid a ghluasad gu eòlaire nam meadhanan (./pub/media/catalog/product
). Cuideachd, nuair a thèid a chur ris tron phannal rianachd, tha an ìomhaigh air a tagadh 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);
Air adhbhar air choireigin, chan eil na meadhanan ceangailte ach às deidh an toradh a shàbhaladh an toiseach agus a thoirt air ais bhon stòr a-rithist. Agus feumaidh tu am feart a shònrachadh label
nuair a chuireas sinn inntrigeadh ri gailearaidh nam meadhanan toraidh (air neo gheibh sinn eisgeachd Undefined index: label in .../module-catalog/Model/Product/Gallery/CreateHandler.php on line 516
).
Roinnean
Gu tric, faodaidh structar roinn-seòrsa an stòr agus an tagradh backend no suidheachadh thoraidhean annta a bhith gu math eadar-dhealaichte. Tha ro-innleachdan airson imrich dàta mu roinnean agus toraidhean taobh a-staigh iad an urra ri mòran fhactaran. San eisimpleir seo tha mi a’ cumail ris na leanas:
- tha roinnean cùl-taice agus stòr air an coimeas a rèir ainm;
- ma thèid roinn a thoirt a-steach nach eil anns a’ bhùth, thèid a chruthachadh fon roinn freumh (
Default Category
) agus thathar a’ gabhail ris le làimh a shuidheachadh eile ann an catalog a’ bhùth; - tha toradh air a shònrachadh do roinn a-mhàin nuair a thèid a chruthachadh anns a ’bhùth (a’ chiad in-mhalairt);
Tha fiosrachadh bunaiteach mun roinn sa chlàr catalog_category_entity
(catalog de roinnean). A’ cruthachadh roinn ann am Magento:
/** @var MagentoCatalogApiDataCategoryInterfaceFactory $factCat */
/** @var MagentoCatalogApiCategoryRepositoryInterface $repoCat */
$cat = $factCat->create();
$cat->setName($name);
$cat->setIsActive(true);
$repoCat->save($cat);
Bithear a’ ceangal toradh ri roinn a’ cleachdadh ID na roinne agus an toradh SKU:
/** @var MagentoCatalogModelCategoryProductLinkFactory $factCatProdLink */
/** @var MagentoCatalogApiCategoryLinkRepositoryInterface $repoCatLink */
$link = $factCatProdLink->create();
$link->setCategoryId($catMageId);
$link->setSku($prodSku);
$repoCatLink->save($link);
Iomlan
Tha e gu math furasta còd a sgrìobhadh gus toradh a chuir ri Magento 2 gu prògramach. Tha mi air a h-uile dad gu h-àrd a thoirt còmhla ann am modal demo “fl32:import:prod
, a bheir a-steach am bathar a tha air a mhìneachadh san fhaidhle JSON"
[
{
"sku": "...",
"name": "...",
"desc": "...",
"desc_short": "...",
"price": ...,
"qty": ...,
"categories": ["..."],
"image_path": "..."
}
]
Tha dealbhan airson in-mhalairt anns a’ chatalog ./etc/data/img
.
Tha an ùine airson 10 toraidhean a thoirt a-steach a’ cleachdadh an dòigh seo timcheall air 10 diogan air an laptop agam. Ma leasaicheas sinn am beachd seo nas fhaide, tha e furasta a thighinn chun cho-dhùnadh gum faodar timcheall air 3600 toradh a thoirt a-steach san uair, agus gun toir e timcheall air 100 uair airson toraidhean 30K a thoirt a-steach. Le bhith a’ cur frithealaiche an àite laptop leigidh sin leat an suidheachadh a dhèanamh rèidh beagan. Is dòcha eadhon grunn thursan. Ach chan ann le òrdughan meudachd. Is dòcha gur e an astar agus an slaodachd seo gu ìre aon de na h-adhbharan airson nochdadh a’ phròiseict
Dh ’fhaodadh fuasgladh radaigeach airson astar in-mhalairt àrdachadh a bhith a’ faighinn a-steach don stòr-dàta gu dìreach, ach sa chùis seo tha a h-uile “goodies” a thaobh leudachd Magento air chall - feumaidh tu a h-uile dad a dhèanamh “adhartach” thu fhèin. Ge-tà, is fhiach e. Ma dh’ obraicheas e a-mach, beachdaichidh mi air an dòigh-obrach le sgrìobhadh dìreach chun stòr-dàta san ath artaigil.
Source: www.habr.com