Magento 2: ์™ธ๋ถ€ ์†Œ์Šค์—์„œ ์ œํ’ˆ ๊ฐ€์ ธ์˜ค๊ธฐ

Magento๋Š” ์ „์ž์ƒ๊ฑฐ๋ž˜ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ํŒ๋งค์— ์ˆ˜๋ฐ˜๋˜๋Š” ์ฐฝ๊ณ , ๋ฌผ๋ฅ˜ ๋˜๋Š” ์žฌ๋ฌดํšŒ๊ณ„๋ณด๋‹ค๋Š” ์ œํ’ˆ ํŒ๋งค๋ฅผ ๋” ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์˜ˆ: ERP ์‹œ์Šคํ…œ)์€ ๋™๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Magento๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋งค์žฅ์„ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ(์˜ˆ: 1C)๊ณผ ํ†ตํ•ฉํ•˜๋Š” ์ž‘์—…์ด ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์ฒด๋กœ ํ†ตํ•ฉ์€ ๋‹ค์Œ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋ณต์ œ๋กœ ์ถ•์†Œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์นดํƒˆ๋กœ๊ทธ(์ œํ’ˆ, ์นดํ…Œ๊ณ ๋ฆฌ);
  • ์žฌ๊ณ  ๋ฐ์ดํ„ฐ(์ฐฝ๊ณ ์˜ ์ œํ’ˆ ์ž”๊ณ  ๋ฐ ๊ฐ€๊ฒฉ)
  • ํด๋ผ์ด์–ธํŠธ;
  • ๋ช…๋ น;

Magento๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ„๋„์˜ ๊ฐ์ฒด ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ์†Œ. Magento์˜ ํŠน์„ฑ์ƒ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์ฝ”๋”ฉํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ ๋Š๋ฆฌ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ„ํ–‰๋ฌผ์—์„œ๋Š” repo ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "๊ณ ์ „์ ์ธ" ๋ฐฉ์‹์œผ๋กœ Magento 2์— ์ œํ’ˆ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ์ฃผ์š” ๋‹จ๊ณ„๋ฅผ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

๊ณ ๊ฐ๊ณผ ์ฃผ๋ฌธ์€ ์ผ๋ฐ˜์ ์œผ๋กœ 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);

"Factory" ๋ฐ "Repository" ์ ‘๊ทผ ๋ฐฉ์‹์€ 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);

์ถ”๊ฐ€ ์†์„ฑ๋„ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

์žฌ๊ณ  ๋ฐ์ดํ„ฐ

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ - ์žฌ๊ณ ๊ฐ€ ์žˆ๋Š” ์ œํ’ˆ์˜ ์–‘์ž…๋‹ˆ๋‹ค. 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์— ์ œํ’ˆ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋ฐ๋ชจ ๋ชจ๋“ˆ๋กœ ๊ฒฐํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค.lancer32/mage2_ext_demo_import". ๋ชจ๋“ˆ์—๋Š” ์ฝ˜์†” ๋ช…๋ น์ด ํ•˜๋‚˜๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. fl32:import:prod, JSON ํŒŒ์ผ์— ์„ค๋ช…๋œ ์ œํ’ˆ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค../etc/data/products.json":

[
  {
    "sku": "...",
    "name": "...",
    "desc": "...",
    "desc_short": "...",
    "price": ...,
    "qty": ...,
    "categories": ["..."],
    "image_path": "..."
  }
]

๊ฐ€์ ธ์˜ฌ ์‚ฌ์ง„์€ ์นดํƒˆ๋กœ๊ทธ์— ์žˆ์Šต๋‹ˆ๋‹ค. ./etc/data/img.

์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์ œํ’ˆ 10๊ฐœ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ์ œ ๋…ธํŠธ๋ถ์—์„œ๋Š” 10์ดˆ ์ •๋„ ์ž…๋‹ˆ๋‹ค. ์ด ์•„์ด๋””์–ด๋ฅผ ๋” ๋ฐœ์ „์‹œํ‚ค๋ฉด ์‹œ๊ฐ„๋‹น ์•ฝ 3600๊ฐœ์˜ ์ œํ’ˆ์„ ์ˆ˜์ž…ํ•  ์ˆ˜ ์žˆ๊ณ , 100K ์ œํ’ˆ์„ ์ˆ˜์ž…ํ•˜๋Š”๋ฐ ์•ฝ 30์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ๊ธฐ ์‰ฝ๋‹ค. ๋…ธํŠธ๋ถ์„ ์„œ๋ฒ„๋กœ ๊ต์ฒดํ•˜๋ฉด ์ƒํ™ฉ์ด ๋‹ค์†Œ ์™„ํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ์—ฌ๋Ÿฌ ๋ฒˆ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทœ๋ชจ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด๋Ÿฌํ•œ ์†๋„์™€ ๋Š๋ฆผ์€ ์–ด๋Š ์ •๋„ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ถœํ˜„ํ•œ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งˆ์  ํ† /๋น„๋™๊ธฐ-๊ฐ€์ ธ์˜ค๊ธฐ.

๊ฐ€์ ธ์˜ค๊ธฐ ์†๋„๋ฅผ ๋†’์ด๋Š” ๊ทผ๋ณธ์ ์ธ ํ•ด๊ฒฐ์ฑ…์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ๊ฒฝ์šฐ Magento์˜ ํ™•์žฅ์„ฑ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  "์ข‹์€ ๊ธฐ๋Šฅ"์ด ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  "๊ณ ๊ธ‰"์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๊ณตํ•˜๋ฉด ๋‹ค์Œ ๊ธฐ์‚ฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ์“ฐ๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€