Ð
å
責äºé
: Magento ã«ã¯æ¢è£œã®æ©èœããããŸãã
äž¡æ¹ã®èšäºãæžããçµæã®ã³ãŒãã¯ãMagento ã¢ãžã¥ãŒã«ã§è¡šç€ºã§ããŸãã
- 補åã¯äœæãããã ãã§ãããæŽæ°ãããŸããã
- XNUMXã€ã®å庫
- ã«ããŽãªåã®ã¿ãã€ã³ããŒãããããã®æ§é ã¯ã€ã³ããŒããããŸããã
- ããŒã¿æ§é ã¯ããŒãžã§ã³ 2.3 ã«æºæ
åäžã®è£œåãã€ã³ããŒãããããã® JSON:
{
"sku": "MVA20D-UBV-3",
"name": "ÐаглÑÑка ÐŽÐ»Ñ Ð¿Ð»ÐŸÐŒÐ±ÐžÑПвкО ÐÐ47-29 IEK",
"desc": "ÐбеÑпеÑеМОе ЎПÑÑÑпа к ÑÑÑÑПйÑÑваЌ ...",
"desc_short": "ÐаглÑÑка ÐŽÐ»Ñ Ð¿Ð»ÐŸÐŒÐ±ÐžÑПвкО ÐÐ47-29 IEK пÑеЎМазМаÑеМа ÐŽÐ»Ñ ...",
"price": 5.00,
"qty": 25,
"categories": ["ÐаÑегПÑÐžÑ 1", "ÐаÑегПÑÐžÑ 2"],
"image_path": "mva20d_ubv_3.png"
}
èŒžå ¥ã®äž»ãªæ®µéã®æŠèŠ
- 補åèªäœã®ç»é²
- 補åãšWebãµã€ãã®ã€ãªãã
- åºæ¬çãªè£œåå±æ§ (EAV)
- åšåº«ããŒã¿ïŒååã®åšåº«æ°ïŒ
- ã¡ãã£ã¢ïŒåçïŒ
- ã«ã¿ãã°ã«ããŽãªãŒãšã®é¢ä¿
補åç»é²
åºæ¬çãªè£œåæ
å ±ã¯ã catalog_product_entity
:
CREATE TABLE `catalog_product_entity` (
`entity_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Entity Id',
`attribute_set_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Attribute Set ID',
`type_id` varchar(32) NOT NULL DEFAULT 'simple' COMMENT 'Type ID',
`sku` varchar(64) DEFAULT NULL COMMENT 'SKU',
`has_options` smallint(6) NOT NULL DEFAULT '0' COMMENT 'Has Options',
`required_options` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Required Options',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Time',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Update Time',
PRIMARY KEY (`entity_id`),
KEY `CATALOG_PRODUCT_ENTITY_ATTRIBUTE_SET_ID` (`attribute_set_id`),
KEY `CATALOG_PRODUCT_ENTITY_SKU` (`sku`)
)
補åã¬ãžã¹ããªã«ãšã³ããªãäœæããããã«å¿ èŠãªæå°éã®æ å ±ã¯æ¬¡ã®ãšããã§ãã
attribute_set_id
sku
è¿œå ïŒ
type_id
â æå®ããªãå Žåã¯ããsimpleãã䜿çšãããŸã
ããŒã¿ããŒã¹ã«çŽæ¥æžã蟌ãã«ã¯ãMagento èªäœã® DB ã¢ããã¿ãŒã䜿çšããŸãã
function create($sku, $typeId, $attrSetId)
{
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('catalog_product_entity');
$bind = [
'sku' => $sku,
'type_id' => $typeId,
'attribute_set_id' => $attrSetId
];
$conn->insert($table, $bind);
$result = $conn->lastInsertId($table);
return $result;
}
ã§è£œåç»é²åŸã catalog_product_entity
管çããã«ã®è£œåã°ãªããã«è¡šç€ºãããŸã (ã«ã¿ãã°ã»è£œå).
ååãšWebãµã€ãã®é¢ä¿
補åãšãµã€ãã®é¢é£ä»ãã«ããã補åãã©ã®åºèã§è²©å£²ãããåºé ã§å±ç€ºããããã決ãŸããŸãã
function linkToWebsite($prodId, $websiteId)
{
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('catalog_product_website');
$bind = [
'product_id' => $prodId,
'website_id' => $websiteId
];
$conn->insert($table, $bind);
}
åºæ¬çãªè£œåç¹æ§
æ°ããç»é²ããã補åã«ã¯ãŸã ååã説æããããŸããã ããã¯ãã¹ãŠã
name
price
description
short_description
status
tax_class_id
url_key
visibility
次ã®ããã«ãå¥ã®å±æ§ããããã¯ãã«è¿œå ãããŸã (ã³ãŒãããå±æ§ã®èå¥åãšã¿ã€ããååŸãã詳现ã¯çç¥ããŸã)ã
public function create($prodId, $attrCode, $attrValue)
{
$attrId = /* get attribute ID by attribute code */
$attrType = /* get attribute type [datetime|decimal|int|text|varchar]) by attribute code */
if ($attrId) {
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$tblName = 'catalog_product_entity_' . $attrType;
$table = $this->resource->getTableName($tblName);
$bind = [
'attribute_id' => $attrId,
'entity_id' => $prodId,
/* put all attributes to default store view with id=0 (admin) */
'store_id' => 0,
'value' => $attrValue
];
$conn->insert($table, $bind);
}
}
å±æ§ã³ãŒãã䜿çšããŠããã® ID ãšããŒã¿åã決å®ããŸã (datetime
, decimal
, int
, text
, varchar
)ã管çãŠã£ã³ããŠã®ããŒã¿ãé©åãªããŒãã« (store_id = 0
).
äžèšã®å±æ§ã補åã«è¿œå ãããšã管çããã«ã«æ¬¡ã®ç»åã衚瀺ãããŸãã
ã€ã³ãã³ããªããŒã¿
Magento ã®ããŒãžã§ã³ 2.3 以éãåšåº«æ å ± (補åæ°é) ã®ã¹ãã¬ãŒãžãæäŸãã XNUMX ã€ã®äžŠåããŒãã« ã»ããããããŸãã
cataloginventory_*
ïŒå€ãæ§é ãinventory_*
: æ°ããæ§é (MSI - ãã«ããœãŒã¹ã€ã³ãã³ããª);
äž¡æ¹ã®æ§é ã«åšåº«ããŒã¿ãè¿œå ããå¿
èŠããããŸãã æ°ããæ§é ã¯ãŸã å€ãæ§é ããå®å
šã«ç¬ç«ããŠããŸããïŒããããã default
æ°ããæ§é ã®å庫ã«ã¯ããŒãã«ãå«ãŸããŸã cataloginventory_stock_status
ãšã㊠inventory_stock_1
).
ã«ã¿ãã°åšåº«_
Magneto 2.3 ããããã€ããå Žåãæå㯠2 ã€ã®ãšã³ããªããããŸãã store_website
ããã㯠XNUMX ã€ã®ãµã€ã (管çã¯ã©ã€ã¢ã³ããšã¡ã€ã³ ã¯ã©ã€ã¢ã³ã) ã«å¯Ÿå¿ããŸãã
website_id|code |name |sort_order|default_group_id|is_default|
----------|-----|------------|----------|----------------|----------|
0|admin|Admin | 0| 0| 0|
1|base |Main Website| 0| 1| 1|
ããŒãã« cataloginventory_stock
ãšã³ããªã¯ XNUMX ã€ã ãã§ãã
stock_id|website_id|stock_name|
--------|----------|----------|
1| 0|Default |
ã€ãŸããç§ãã¡ã®å€ãæ§é ã«ã¯ãå庫ãã XNUMX ã€ãããããŸãã (stock
ïŒãã管çãµã€ããžãªã³ã¯ããŠãããŸãã 管çããã«ããæ°ãããã®ãè¿œå ãã sources
/stocks
MSI (æ°ããæ§é ) ã§ã¯ãæ°ãããšã³ããªã¯çæãããŸããã cataloginventory_stock
.
å€ãæ§é ã®è£œåã«é¢ããåšåº«ããŒã¿ã¯ãæåã¯ããŒãã«ã«èšé²ãããŸãã
cataloginventory_stock_item
cataloginventory_stock_status
ã«ã¿ãã°åšåº«_åšåº«_åç®
function createOldItem($prodId, $qty)
{
$isQtyDecimal = (((int)$qty) != $qty);
$isInStock = ($qty > 0);
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('cataloginventory_stock_item');
$bind = [
'product_id' => $prodId,
/* we use one only stock in 'cataloginventory' structure by default */
'stock_id' => 1,
'qty' => $qty,
'is_qty_decimal' => $isQtyDecimal,
'is_in_stock' => $isInStock,
/* default stock is bound to admin website (see `cataloginventory_stock`) */
'website_id' => 0
];
$conn->insert($table, $bind);
}
ã«ã¿ãã°åšåº«_åšåº«_ã¹ããŒã¿ã¹
function createOldStatus($prodId, $qty)
{
$isInStock = ($qty > 0);
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('cataloginventory_stock_status');
$bind = [
'product_id' => $prodId,
/* we use one only stock in 'cataloginventory' structure by default */
'stock_id' => 1,
'qty' => $qty,
'stock_status' => MagentoCatalogInventoryApiDataStockStatusInterface::STATUS_IN_STOCK,
/* default stock is bound to admin website (see `cataloginventory_stock`) */
'website_id' => 0
];
$conn->insert($table, $bind);
}
åšåº«_
æåã¯ãåšåº«ããŒã¿ãä¿åããããã®æ°ããæ§é ã«ã¯ 1 ã€ã® "ãœãŒã¹ãïŒinventory_source
):
source_code|name |enabled|description |latitude|longitude|country_id|...|
-----------|--------------|-------|--------------|--------|---------|----------|...|
default |Default Source| 1|Default Source|0.000000| 0.000000|US |...|
ãããŠXNUMXã€ãå庫ãïŒinventory_stock
):
stock_id|name |
--------|-------------|
1|Default Stock|
«ãœãŒã¹Â» 補åã®ç©ççãªä¿ç®¡å Žæãè¡šããŸã (ã¬ã³ãŒãã«ã¯ç©ççãªåº§æšãšéµéå
äœæãå«ãŸããŸã)ã ãå庫"ã¯ãè€æ°ã® "ãœãŒã¹" ã®è«ççµåã§ã (inventory_source_stock_link
)
link_id|stock_id|source_code|priority|
-------|--------|-----------|--------|
1| 1|default | 1|
販売ãã£ãã«ãšã®ã€ãªãããçºçããã¬ãã«ïŒinventory_stock_sales_channel
)
type |code|stock_id|
-------|----|--------|
website|base| 1|
ããŒã¿æ§é ããå€æãããšãããŸããŸãªè²©å£²ãã£ãã«ãæ³å®ãããŸãããããã©ã«ãã§ã¯æ¥ç¶ã®ã¿ã§ããæ ªåŒã-ããŠã§ããµã€ã"(Web ãµã€ããžã®ãªã³ã¯ã¯ Web ãµã€ãã®ã³ãŒãã«åŸããŸã - base
).
XNUMX〠"å庫ãè€æ°ã«ãªã³ã¯ã§ããããœãŒã¹ããããŠäžã€ããœãŒã¹ãïœæ°ä»¶ãŸã§ãå庫"(å€å¯Ÿå€ã®é¢ä¿)ã äŸå€ã¯ããã©ã«ãã§ããããœãŒã¹"ãããŠ"å庫ãã ãããã¯ä»ã®ãšã³ãã£ãã£ã«åãªã³ã¯ãããŸãã (ã³ãŒã ã¬ãã«ã§ã®å¶é - ãšã©ãŒãããã©ã«ãã®ãœãŒã¹ãŸãã¯ããã©ã«ãã®ã¹ããã¯ã«é¢é£ãããªã³ã¯ãä¿åã§ããŸãã")ã Magento 2 ã® MSI æ§é ã®è©³çŽ°ã«ã€ããŠã¯ãèšäºã
ããã©ã«ãã®æ§æã䜿çšãããã¹ãŠã®ã€ã³ãã³ããªæ
å ±ããœãŒã¹ã«è¿œå ããŸãã default
ãã³ãŒããæ〠Web ãµã€ãã«é¢é£ä»ãããã販売ãã£ãã«ã«é¢äžããŠããŸã base
(ã¹ãã¢ã®ããã³ããšã³ãã«çžåœããŸã - ãåç
§ããŠãã ãã) store_website
):
function createNewItem($sku, $qty)
{
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('inventory_source_item');
$bind = [
'source_code' => 'default',
'sku' => $sku,
'quantity' => $qty,
'status' => MagentoInventoryApiApiDataSourceItemInterface::STATUS_IN_STOCK
];
$conn->insert($table, $bind);
}
管çããã«ã§è£œåã«åšåº«ããŒã¿ãè¿œå ãããšã次ã®å³ã衚瀺ãããŸãã
ã¡ãã£ã¢
管çããã«ãéããŠè£œåã«ç»åããæåãã§è¿œå ãããšãé¢é£æ å ±ã次ã®è¡šã«æžã蟌ãŸããŸãã
catalog_product_entity_media_gallery
: ã¡ãã£ã¢ ã¬ãžã¹ã㪠(ç»åããã³ãã㪠ãã¡ã€ã«);catalog_product_entity_media_gallery_value
: ã¡ãã£ã¢ã補åãã·ã§ãŒã±ãŒã¹ã«ãªã³ã¯ãã (ããŒã«ãªãŒãŒã·ã§ã³)ãcatalog_product_entity_media_gallery_value_to_entity
: ã¡ãã£ã¢ã補åã®ã¿ã«ãªã³ã¯ããŸã (ãããã補åã®ããã©ã«ãã®ã¡ãã£ã¢ ã³ã³ãã³ã)ãcatalog_product_entity_varchar
: ç»åã䜿çšããã圹å²ãããã«ä¿åãããŸãã
ç»åèªäœã¯ãã£ã¬ã¯ããªã«ä¿åãããŸã ./pub/media/catalog/product/x/y/
ã©ã x
О y
â ç»åãã¡ã€ã«åã®æåãš XNUMX æåç®ã ããšãã°ããã¡ã€ã« image.png
ãšããŠä¿åããå¿
èŠããããŸã ./pub/media/catalog/product/i/m/image.png
ããã©ãããã©ãŒã ãã«ã¿ãã°ã®è£œåã説æãããšãã«ç»åãšããŠäœ¿çšã§ããããã«ããŸãã
ã«ã¿ãã°è£œåãšã³ãã£ãã£ã¡ãã£ã¢ã®ã£ã©ãªãŒ
ã«æçš¿ãããç»é² ./pub/media/catalog/product/
ã¡ãã£ã¢ ãã¡ã€ã« (ãã¡ã€ã«èªäœãé
眮ããããã»ã¹ã«ã€ããŠã¯ããã®èšäºã§ã¯èª¬æããŸãã):
function createMediaGallery($imgPathPrefixed)
{
$attrId = /* get attribute ID by attribute code 'media_gallery' */
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('catalog_product_entity_media_gallery');
$bind = [
'attribute_id' => $attrId,
'value' => $imgPathPrefixed,
/* 'image' or 'video' */
'media_type' => 'image',
'disabled' => false
];
$conn->insert($table, $bind);
$result = $conn->lastInsertId($table);
return $result;
}
ç»é²ããããšãæ°ããã¡ãã£ã¢ ãã¡ã€ã«ã«ã¯èå¥åãå²ãåœãŠãããŸãã
ã«ã¿ãã°_補å_ãšã³ãã£ãã£_ã¡ãã£ã¢_ã®ã£ã©ãªãŒ_å€
ç»é²ãããã¡ãã£ã¢ ãã¡ã€ã«ããããã©ã«ãã®ã¹ãã¢ããã³ãã®å¯Ÿå¿ãã補åã«é¢é£ä»ããŸãã
function createGalleryValue($mediaId, $prodId)
{
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('catalog_product_entity_media_gallery_value');
$bind = [
'value_id' => $mediaId,
/* use admin store view by default */
'store_id' => 0,
'entity_id' => $prodId,
'label' => null,
/* we have one only image */
'position' => 1,
'disabled' => false
];
$conn->insert($table, $bind);
}
ã«ã¿ãã°_補å_ãšã³ãã£ãã£_ã¡ãã£ã¢_ã®ã£ã©ãªãŒ_å€_ãšã³ãã£ãã£
åºé ã«çžãããããšãªããç»é²ãããã¡ãã£ã¢ ãã¡ã€ã«ã察å¿ãã補åã«é¢é£ä»ããŸãã ãã®ããŒã¿ãæ£ç¢ºã«ã©ãã§äœ¿çšãããã®ãããªãåã®ããŒãã«ã®ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããªãã®ãã¯äžæã§ããããã®ããŒãã«ã¯ååšãã補åã«ç»åãè¿œå ããããšãã«ããŒã¿ãæžã蟌ãŸããŸãã ããã§çµããã§ãã
function createGalleryValueToEntity($mediaId, $prodId)
{
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('catalog_product_entity_media_gallery_value_to_entity');
$bind = [
'value_id' => $mediaId,
'entity_id' => $prodId
];
$conn->insert($table, $bind);
}
ã«ã¿ãã°_補å_ãšã³ãã£ãã£_varchar
ã¡ãã£ã¢ ãã¡ã€ã«ã¯ããŸããŸãªåœ¹å²ã§äœ¿çšã§ããŸã (察å¿ããå±æ§ã³ãŒããæ¬åŒ§å ã«ç€ºãããŠããŸã)ã
- ããŒã¹ïŒ
image
) - å°ããç»å (
small_image
) - ãµã ãã€ã« (
thumbnail
) - ã¹ãŠã©ããç»å (
swatch_image
)
圹å²ãã¡ãã£ã¢ ãã¡ã€ã«ã«ãªã³ã¯ãããšããŸãã«æ¬¡ã®ããšãèµ·ãããŸãã catalog_product_entity_varchar
ã ãã€ã³ãã£ã³ã° ã³ãŒãã¯ãããã®ã³ãŒããšäŒŒãŠããŸããåºæ¬çãªè£œåç¹æ§"
管çããã«ã§è£œåã«ç»åãè¿œå ãããšã次ã®ããã«ãªããŸãã
ÐаÑегПÑОО
ã«ããŽãªå¥ã®ããŒã¿ãå«ãäž»ãªããŒãã«:
catalog_category_entity
: ã«ããŽãªã®ç»é²ãcatalog_category_product
: 補åãšã«ããŽãªãŒéã®ã€ãªãããcatalog_category_entity_*
: EAV å±æ§å€ã
æåã空㮠Magento ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã«ããŽãª ã¬ãžã¹ããªã« 2 ã€ã®ã«ããŽãªãå«ãŸããŠããŸã (ååãççž®ããŸãã: crt
- created_at
, upd
- updated_at
):
entity_id|attribute_set_id|parent_id|crt|upd|path|position|level|children_count|
---------|----------------|---------|---|---|----|--------|-----|--------------|
1| 3| 0|...|...|1 | 0| 0| 1|
2| 3| 1|...|...|1/2 | 1| 1| 0|
id=1 ã®ã«ããŽãªã¯ Magento ã«ã¿ãã°å šäœã®ã«ãŒãã§ããã管çããã«ã«ãããã³ãããŒãžã«ããããŸããã ID=2 ã®ã«ããŽãª (æ¢å®ã®ã«ããŽãª) ã¯ãã¡ã€ã³ ãµã€ãã®ã¡ã€ã³ ã¹ã㢠(ã¡ã€ã³ãŠã§ããµã€ãã¹ãã¢) ã¢ããªã±ãŒã·ã§ã³ã®ãããã€æã«äœæãããŸã (ã. 管çè / ã¹ã㢠/ ãã¹ãŠã®ã¹ãã¢ïŒã ããã«ãã¹ãã¢èªäœã®ã«ãŒã ã«ããŽãªãããã³ãã§ã¯å©çšã§ããããã®ãµãã«ããŽãªã®ã¿ãå©çšå¯èœã§ãã
ãã®èšäºã®ããŒãã¯åŒãç¶ã補åã®ããŒã¿ã®ã€ã³ããŒãã§ãããããã«ããŽãªãäœæãããšãã«ããŒã¿ããŒã¹ãžã®çŽæ¥å ¥åã¯äœ¿çšãããMagento èªäœãæäŸããã¯ã©ã¹ (ã¢ãã«ãšãªããžããª) ã䜿çšããŸãã ããŒã¿ããŒã¹ãžã®çŽæ¥å ¥åã¯ãã€ã³ããŒãããã補åãã«ããŽãªã«é¢é£ä»ããããã«ã®ã¿äœ¿çšãããŸã (ã«ããŽãªã¯ååã«ãã£ãŠç §åãããã«ããŽãª ID ã¯ç §åäžã«ååŸãããŸã)ã
function create($prodId, $catId)
{
/** @var MagentoFrameworkAppResourceConnection $this->resource */
/** @var MagentoFrameworkDBAdapterPdoMysql $conn */
$conn = $this->resource->getConnection();
$table = $this->resource->getTableName('catalog_category_product');
$bind = [
'category_id' => $catId,
'product_id' => $prodId,
];
$conn->insert($table, $bind);
}
ã«ããŽãªãã«ããŽãª 1ããšãã«ããŽãª 2ãã«è£œåãªã³ã¯ãè¿œå ãããšã管çããã«ã®è£œå詳现ã¯æ¬¡ã®ããã«ãªããŸãã
è¿œå ã®ã¢ã¯ã·ã§ã³
ããŒã¿ã®ã€ã³ããŒããå®äºãããã次ã®è¿œå æé ãå®äºããå¿ èŠããããŸãã
- ããŒã¿ã®ã€ã³ããã¯ã¹äœæ:ã³ã³ãœãŒã«ã§ã®åŒã³åºã
./bin/magento indexer:reindex
; - 補å/ã«ããŽãªã® URL ãåçæ: æ¡åŒµåããã䜿çšã§ããŸãã
elgentos/regenerate-catalog-urls «
è¿œå ã®ã¢ã¯ã·ã§ã³ãå®è¡ããåŸã®ç®¡çããã«ã®è£œå:
ãããŠæ£é¢ã«ã¯ïŒ
ãµããªãŒ
åã®èšäºãšåã補åã»ãã (10 å) ã¯ãå°ãªããšã 1 æ¡éãã€ã³ããŒããããŸã (10 åã«å¯Ÿã㊠XNUMX ç§)ã é床ãããæ£ç¢ºã«èŠç©ããã«ã¯ãããå€ãã®è£œå (æ°çŸãã§ããã°æ°å) ãå¿ èŠã§ãã ãã ããå ¥åããŒã¿ã®ãµã€ãºããã®ããã«å°ããå Žåã§ããMagento ãæäŸããããŒã« (ã¢ãã«ãšãªããžããª) ã®äœ¿çšã¯éèŠã§ãããšçµè«ä»ããããšãã§ããŸã (匷調ããŸã - ã¯ããã«!) å¿ èŠãªæ©èœã®éçºãã¹ããŒãã¢ããããŸãããåæã«å€§å¹ ã« (匷調ããŸã - ã¯ããã«!) ããŒã¿ãããŒã¿ããŒã¹ã«å ¥ãé床ãäžããŸãã
ãã®çµæãæ°Žã¯æ¿¡ããŠããããšãå€æããŸããããããã¯å瀺ã§ã¯ãããŸããã ããããä»ã§ã¯ã³ãŒããããã£ãŠã¿ããšããã£ãšèå³æ·±ãçµè«ã«éãããããããŸããã
åºæïŒ habr.com