Magento ã¯é»ååååŒãœãªã¥ãŒã·ã§ã³ã§ãã 販売ã«äŒŽãå庫管çãç©æµã財åäŒèšããã補åã®è²©å£²ãç®çãšããŠããŸãã ä»ã®ã¢ããªã±ãŒã·ã§ã³ (ERP ã·ã¹ãã ãªã©) ã¯ãä»éããã¢ããªã±ãŒã·ã§ã³ã«é©ããŠããŸãã ãããã£ãŠãMagento ã䜿çšããéã«ã¯ãã¹ãã¢ããããã®ä»ã®ã·ã¹ãã (1C ãªã©) ãšçµ±åããäœæ¥ãé »ç¹ã«çºçããŸãã
äžè¬ã«ãçµ±åã¯æ¬¡ã®ããã«ããŠããŒã¿ ã¬ããªã±ãŒã·ã§ã³ã«éçŽã§ããŸãã
- ã«ã¿ãã° (補åãã«ããŽãª);
- åšåº«ããŒã¿ïŒå庫å ã®è£œåæ®é«ãšäŸ¡æ ŒïŒã
- ã¯ã©ã€ã¢ã³ãã
- åœä»€ã
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);
ããã¡ã¯ããªãŒããšããªããžããªãã®ã¢ãããŒãã¯ãMagento 2 ãã¡ã€ã³ã®ãã¹ãŠã®äž»èŠã¢ãã«ã«äœ¿çšã§ããŸãã
補ååºæ¬æ å ±
Magento 2.3ã®ããŒãžã§ã³ãšäžèŽããããŒã¿æ§é ãæ€èšããŠããŸãã 補åã«é¢ããæãåºæ¬çãªæ
å ±ã¯è¡šã«èšèŒãããŠããŸã catalog_product_entity
(補åç»é²):
entity_id
attribute_set_id
type_id
sku
has_options
required_options
created_at
updated_at
ååã¯XNUMXçš®é¡ã«éãããŠããã ããŸã(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
) ã¯ããã®ãã©ãããã©ãŒã ã®éèŠãªæ©èœã® XNUMX ã€ã§ãã é©åãªå±æ§ã補åã¢ãã«ã«è¿œå ããã ãã§ãã
$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);
ã¡ãã£ã¢
äžè¬ã«ãåºè (é»ååååŒ) ã§ã®é¡§å®¢ã«å¯Ÿãã補åã®ã¡ãã£ã¢ ãµããŒãã¯ã瀟å
äŒèšã·ã¹ãã (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
).
ÐаÑегПÑОО
å€ãã®å Žåãã¹ãã¢ãšããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ã®ã«ããŽãªæ§é ããŸãã¯ã¹ãã¢å ã®è£œåã®é 眮ã¯å€§å¹ ã«ç°ãªãå ŽåããããŸãã ã«ããŽãªãšãã®ã«ããŽãªå ã®è£œåã«é¢ããããŒã¿ã移è¡ããæŠç¥ã¯ãå€ãã®èŠå ã«ãã£ãŠç°ãªããŸãã ãã®äŸã§ã¯ã次ã®ããšã«ãã ãããŸãã
- ããã¯ãšã³ã ã«ããŽãªãšã¹ã㢠ã«ããŽãªã¯ååã§æ¯èŒãããŸãã
- ã¹ãã¢ã«ãªãã«ããŽãªãã€ã³ããŒããããå Žåããã®ã«ããŽãªã¯ã«ãŒã ã«ããŽãªã®äžã«äœæãããŸã (
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 äžåã®è£œåã茞å
¥ããã«ã¯çŽ XNUMX æéããããšããçµè«ã«éããã®ã¯å®¹æã§ãã ã©ãããããããµãŒããŒã«çœ®ãæããããšã§ãç¶æ³ãããçšåºŠã¹ã ãŒãºã«ããããšãã§ããŸãã ããããããæ°åããããããããªãã ããããæ¡éãã§ã¯ãããŸããã ããããããã®éããšé
ãã¯ãããçšåºŠããããžã§ã¯ããèªçããçç±ã®XNUMXã€ã§ãã
ã€ã³ããŒãé床ãäžããæ ¹æ¬çãªè§£æ±ºçã¯ãããŒã¿ããŒã¹ã«çŽæ¥å ¥åããããšãããããŸãããããã®å ŽåãMagento ã®æ¡åŒµæ§ã«é¢ãããã¹ãŠã®ãå©ç¹ãã倱ãããŸãããã¹ãŠããé«åºŠãªãèªåã§è¡ãå¿ èŠããããŸãã ãã ããããã ãã®äŸ¡å€ã¯ãããŸãã ãããããŸããã£ããã次ã®èšäºã§ããŒã¿ããŒã¹ã«çŽæ¥æžã蟌ãã¢ãããŒããæ€èšããŸãã
åºæïŒ habr.com