Magento ืืื ืคืชืจืื ืืกืืจ ืืืงืืจืื ื, ืืืืืจ. ืืืืื ืืืชืจ ืืืืืจืช ืืืฆืจืื ืืืฉืจ ืืืืกื ืื, ืืืืืกืืืงื ืื ืืฉืืื ืืืช ืคืื ื ืกืืช ืื ืืืืืช ืืืืืจืืช. ืืืฉืืืื ืืืจืื (ืืืฉื, ืืขืจืืืช ERP) ืืชืืืืืช ืืืชืจ ืืืืฉืืืื ื ืืืืื. ืืื, ืืขืชืื ืงืจืืืืช ืืืื ืืชืจืืื ืืฉืืืืฉ ืืื'ื ืื ืืชืขืืจืจืช ืืืฉืืื ืฉื ืฉืืืื ืื ืืช ืขื ืืขืจืืืช ืืืจืืช ืืื (ืืืืืื, 1C).
ืืืืื, ื ืืชื ืืฆืืฆื ืืช ืืืื ืืืจืฆืื ืืฉืืคืื ื ืชืื ืื ืขื ืืื:
- ืงืืืื (ืืืฆืจืื, ืงืืืืจืืืช);
- ื ืชืื ื ืืืื (ืืชืจืืช ืืืฆืจืื ืืืืกื ืื ืืืืืจืื);
- ืืงืืืืช;
- ืืืื ืืช;
ืื'ื ืื ืืฆืืขื ืืืืงื ื ืคืจืืช ืฉื ืืืืืืงืืื ืืื ืืคืืืฆืื ืฉื ื ืชืื ืื ืืืกื ืื ืชืื ืื -
ืืงืืืืช ืืืืื ืืช ืืฉืืืคืืืช ืืืจื ืืื ืืืืืื ืืฉื ื - ืืื'ื ืื ืืขื ืืืขืจืืืช ERP ืืืฆืื ืืืช. ืืื, ืื ืคืฉืื ืืืชืจ ืืืชื, ืืฆื ืืื'ื ืื ืืชื ืจืง ืฆืจืื ืืืืืจ ืืช ืื ืชืื ืื ืืืชืืืืื, ืืื "ืืืืจืื ืขืคื ืืืฆื ืฉืื ื".
ืขืงืจืื ืืช ืจืืฉืื ื ืชืื ืื ืืืกื ื ืชืื ืื
ื ืืื ืืขืืฉืื, ืืฆืืจืช ืืืืืืงืืื ืฉื ืฉืืจื ืืืกื ืื ืชืื ืื ืืืืคื ืคืจืืืจืืื ืืื'ื ืื ืืชืืฆืขืช ืืืืฆืขืืช
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
ืื ื ืืืืื ืืกืื ืืื ืฉื ืืืฆืจ (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
) ืืื ืืื ืืืืคืืื ื ืืืคืชื ืฉื ืคืืืคืืจืื ืื. ืื ื ืคืฉืื ืืืกืืคืื ืืช ืืชืืื ืืช ืืืชืืืืืช ืืืืื ืืืืฆืจ:
$prodEntity->setData('description', $desc);
$prodEntity->setData('short_description', $desc_short);
// ะธะปะธ
$prodEntity->setDescription($desc);
$prodEntity->setShortDescription($desc_short);
ืืืืฉืจ ืฉืืืจืื ืืช ืืืืื ืืจื ืืืืืืงื ื-repo:
$repoProd->save($prod);
ืชืืื ืืช ื ืืกืคืืช ืืืืืกื ื ืื ืืืืืืืช ืืกื ืื ืชืื ืื ืืืชืืืืืช.
ื ืชืื ื ืืืื
ืืืืืื ืคืฉืืืืช - ืืืืช ืืืืฆืจ ืืืืื. ืืื'ื ืื 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
).
ืงืืืืจืืืช
ืืขืชืื ืงืจืืืืช, ืืื ื ืืงืืืืจืื ืฉื ืืื ืืช ืืืืฉืื ื-backend ืื ืืืงืื ืืืืฆืจืื ืืื ืืืืืื ืืืืืช ืฉืื ืื ืืืืคื ืืฉืืขืืชื. ืืกืืจืืืืืช ืืืขืืจืช ื ืชืื ืื ืขื ืงืืืืจืืืช ืืืืฆืจืื ืืชืืื ืชืืืืืช ืืืืจืืื ืจืืื. ืืืืืื ืื ืื ื ื ืฆืื ืืืืจืื ืืืืื:
- ืงืืืืจืืืช ืงืฆื ืืื ืืช ืืืฉืืืช ืืคื ืฉื;
- ืื ืืืืืืช ืงืืืืจืื ืฉืืื ื ืืื ืืช, ืืื ื ืืฆืจืช ืชืืช ืงืืืืจืืืช ืืฉืืจืฉ (
Default Category
) ืืืืงืืื ืื ืืกืฃ ืืงืืืื ืืื ืืช ืืื ืื ืืืืคื ืืื ื; - ืืืฆืจ ืืืงืฆื ืืงืืืืจืื ืจืง โโืืืฉืจ ืืื ื ืืฆืจ ืืื ืืช (ืืืื ืจืืฉืื);
ืืืืข ืืกืืกื ืขื ืืงืืืืจืื ื ืืฆื ืืืืื catalog_category_entity
(ืงืืืื ืงืืืืจืืืช). ืืฆืืจืช ืงืืืืจืื ืืื'ื ืื:
/** @var MagentoCatalogApiDataCategoryInterfaceFactory $factCat */
/** @var MagentoCatalogApiCategoryRepositoryInterface $repoCat */
$cat = $factCat->create();
$cat->setName($name);
$cat->setIsActive(true);
$repoCat->save($cat);
ืงืืฉืืจ ืืืฆืจ ืืงืืืืจืื ืืชืืฆืข ืืืืฆืขืืช ืืืื ืืงืืืืจืื ืืืง"ื ืืืืฆืจ:
/** @var MagentoCatalogModelCategoryProductLinkFactory $factCatProdLink */
/** @var MagentoCatalogApiCategoryLinkRepositoryInterface $repoCatLink */
$link = $factCatProdLink->create();
$link->setCategoryId($catMageId);
$link->setSku($prodSku);
$repoCatLink->save($link);
ืืกื ืืื
ืืชืืืช ืงืื ืืืืกืคืช ืืืฆืจ ืืืืคื ืคืจืืืจืืื ืืื'ื ืื 2 ืืื ืื ืงืื. ืฉืืืืชื ืืช ืื ืื ืฉืฆืืื ืืขืื ืืืืืื ืืืืื "fl32:import:prod
, ืืืืืืืช ืืช ืืืืฆืจืื ืืืชืืืจืื ืืงืืืฅ JSON "
[
{
"sku": "...",
"name": "...",
"desc": "...",
"desc_short": "...",
"price": ...,
"qty": ...,
"categories": ["..."],
"image_path": "..."
}
]
ืชืืื ืืช ืืืืืื โโื ืืฆืืืช ืืงืืืื ./etc/data/img
.
ืืืื ืืืืื 10 ืืืฆืจืื ืืฉืืื ืื ืืื ืืขืจื 10 ืฉื ืืืช ืืืืฉื ืื ืืื ืฉืื. ืื ื ืคืชื ืืช ืืจืขืืื ืืื, ืงื ืืืืืข ืืืกืงื ื ืฉื ืืชื ืืืืื ื-3600 ืืืฆืจืื ืืฉืขื, ืืืืื ืืงืืช ื-100 ืฉืขืืช ืืืืื 30K ืืืฆืจืื. ืืืืคืช ืืืฉื ื ืืื ืืฉืจืช ืืืคืฉืจืช ืืืืืืง ืืขื ืืช ืืืฆื. ืืืื ืืคืืื ืืื ืคืขืืื. ืืื ืื ืืกืืจื ืืืื. ืืืื ืืืืืจืืช ืืืืืืืช ืืื ืืื ืืืืื ืืกืืืืช ืืืช ืืกืืืืช ืืืืคืขืชื ืฉื ืืคืจืืืงื
ืคืชืจืื ืงืืฆืื ื ืืืืืจืช ืืืืจืืช ืืืืืื โโืืืื ืืืืืช ืื ืืกื ืืฉืืจื ืืืกื ืื ืชืื ืื, ืืื ืืืงืจื ืื ืื ื"ืืืืืช" ืืืื ืืืจืืื ืฉื ืื'ื ืื ืืืืืื ืืืืืื - ืชืฆืืจื ืืขืฉืืช ืืื "ืืชืงืื" ืืขืฆืื. ืขื ืืืช, ืื ืฉืืื ืืช ืื. ืื ืื ืืฆืืื, ืืฉืงืื ืืช ืืืืฉื ืขื ืืชืืื ืืฉืืจื ืืืืืจ ืืืืืจ ืืื.
ืืงืืจ: www.habr.com