Magento 2: เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™

ะ’ เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Magento 2 เปƒเบ™เปเบšเบšเบ›เบปเบเบเบฐเบ•เบด - เป‚เบ”เบเบœเปˆเบฒเบ™เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เปเบฅเบฐเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™. เบงเบดเบ—เบตเบเบฒเบ™เบ›เบปเบเบเบฐเบ•เบดเบกเบตเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบ•เปเปˆเบฒเบซเบผเบฒเบ. เปเบฅเบฑเบšเบ—เบฑเบญเบšเบ‚เบญเบ‡เบ‚เป‰เบญเบเบเปเบฒเบฅเบฑเบ‡เบœเบฐเบฅเบดเบ”เบ›เบฐเบกเบฒเบ™เบซเบ™เบถเปˆเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต. เปƒเบ™เบเบฒเบ™เบชเบทเบšเบ•เปเปˆเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™ - เป‚เบ”เบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เบเบเบปเบ‡, เบ‚เป‰เบฒเบกเบเบปเบ™เป„เบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ Magento 2 (เปเบšเบš, เป‚เบฎเบ‡เบ‡เบฒเบ™เบœเบฐเบฅเบดเบ”, เบ„เบฑเบ‡เป€เบเบฑเบšเบกเป‰เบฝเบ™). เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบเบฑเบšเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเปƒเบ”เป†เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš MySQL.

เบ‚เปเป‰เบชเบฑเบ‡เป€เบเบ”: Magento เบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบš เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹ เปเบฅเบฐ, เบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐ, เบกเบฑเบ™เบˆเบฐเบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เบเบงเปˆเบฒเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ, เบšเปเปˆเบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบเบฐเบเบฝเบกเป„เบŸเบฅเปŒ CSV เบชเปเบฒเบฅเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบกเบต, เบเบดเบ™เบ”เบตเบ•เป‰เบญเบ™เบฎเบฑเบš cat.

Magento 2: เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™

เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบฒเบˆเบฒเบเบเบฒเบ™เบ‚เบฝเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบฑเบ‡เบชเบญเบ‡เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป„เบ”เป‰เปƒเบ™เป‚เบกเบ”เบนเบ™ Magento "flacer32/mage2_ext_demo_import". เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เป‚เบกเบ”เบนเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบ:

  • เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเป‰เบฒเบ‡, เบšเปเปˆเป„เบ”เป‰เบ›เบฑเบšเบ›เบธเบ‡.
  • เบชเบฒเบ‡เบซเบ™เบถเปˆเบ‡
  • เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบŠเบทเปˆเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเป€เบ‚เบปเป‰เบฒ, เป‚เบ”เบเบšเปเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบกเบฑเบ™
  • เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบชเบฐเบšเบฑเบš 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"
}

เบžเบฒเบšเบฅเบงเบกเบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ

  • เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡
  • เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบฅเบฐเป€เบงเบฑเบšเป„เบŠเบ—เปŒ
  • เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™ (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 โ€” เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบกเบฑเบ™โ€‹, เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™ 'เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹' เบˆเบฐโ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹

เป€เบžเบทเปˆเบญเบ‚เบฝเบ™เป‚เบ”เบเบเบปเบ‡เปƒเบชเปˆเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบ‚เป‰เบญเบเปƒเบŠเป‰เบญเบฐเปเบ”เบšเป€เบ•เบต DB เบ‚เบญเบ‡ Magento เป€เบญเบ‡:

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 เบกเบฑเบ™เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบเบฐเบ”เบฒเบ™ admin, เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™ (เบฅเบฒเบเบเบฒเบ™/เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™).

Magento 2: เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™

เบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบฅเบฐเป€เบงเบฑเบšเป„เบŠเบ—เปŒ

เบชเบฐเบกเบฒเบ„เบปเบกเบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบฎเป‰เบฒเบ™เปƒเบ”เปเบฅเบฐเบชเบฐเปเบ”เบ‡เบชเบดเบ™เบ„เป‰เบฒเบˆเบฐเบกเบตเบขเบนเปˆเบ—เบฒเบ‡เบซเบ™เป‰เบฒ.

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);
}

Magento 2: เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™

เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™

เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ—เบตเปˆเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปƒเบซเบกเปˆเบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เบกเบตเบŠเบทเปˆเบซเบผเบทเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบ. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบœเปˆเบฒเบ™ เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ EAV. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ–เบทเบเบชเบฐเปเบ”เบ‡เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบขเบนเปˆเบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒ:

  • 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).

เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบžเบตเปˆเบกเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เปƒเบชเปˆเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบฎเบนเบšเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบเบฐเบ”เบฒเบ™ admin:

Magento 2: เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™

เบ‚เปเป‰เบกเบนเบ™เบชเบดเบ™เบ„เป‰เบฒเบ„เบปเบ‡เบ„เบฑเบ‡

เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเบชเบฐเบšเบฑเบš 2.3 เปƒเบ™ Magento, เบกเบตเบชเบญเบ‡เบŠเบธเบ”เบ‚เบฐเบซเบ™เบฒเบ™เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบชเบดเบ™เบ„เป‰เบฒเบ„เบปเบ‡เบ„เบฑเบ‡ (เบ›เบฐเบฅเบดเบกเบฒเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™):

  • cataloginventory_*: เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป€เบเบปเปˆเบฒ;
  • inventory_*: เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ (MSI - Multi Source Inventory);

เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเบ‚เปเป‰เบกเบนเบ™เบชเบดเบ™เบ„เป‰เบฒเบ„เบปเบ‡เบ„เบฑเบ‡เปƒเบซเป‰เบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบชเบญเบ‡, เป€เบžเบฒเบฐเบงเปˆเบฒ เป‚เบ„เบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบเบฒเบ™โ€‹เปƒเบซเบกเปˆโ€‹เปเบกเปˆเบ™โ€‹เบเบฑเบ‡โ€‹เบšเปเปˆโ€‹เบ—เบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เป€เบญโ€‹เบเบฐโ€‹เบฅเบฒเบ”โ€‹เบขเปˆเบฒเบ‡โ€‹เบชเบปเบกโ€‹เบšเบนเบ™โ€‹เบ‚เบญเบ‡โ€‹เป€เบเบปเปˆเบฒ (เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เปเบ™เบงโ€‹เป‚เบ™เป‰เบกโ€‹เบ—เบตเปˆโ€‹เบซเบผเบฒเบโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹ default เบ„เบฑเบ‡เบชเบดเบ™เบ„เป‰เบฒเปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ, เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบก cataloginventory_stock_status เป€เบ›เบฑเบ™ inventory_stock_1).

เบฅเบฒเบเบเบฒเบ™เบชเบฒเบ‡_

เป€เบกเบทเปˆเบญเบ™เบณเปƒเบŠเป‰ Magneto 2.3 เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบต 2 เบฅเบฒเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒ store_website, เป€เบŠเบดเปˆเบ‡เบเบปเบ‡เบเบฑเบšเบชเบญเบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ - เบเบฒเบ™เบšเปเบฅเบดเบซเบฒเบ™เปเบฅเบฐเบฅเบนเบเบ„เป‰เบฒเบ•เบปเป‰เบ™เบ•เป:

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 เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เป€เบ‚เบปเป‰เบฒ:

stock_id|website_id|stock_name|
--------|----------|----------|
       1|         0|Default   |

เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป€เบเบปเปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบต "เบชเบฒเบ‡" เบ”เบฝเบง (stock) เปเบฅเบฐเบกเบฑเบ™เบ–เบทเบเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบšเปเบฅเบดเบซเบฒเบ™. เบเบฒเบ™เป€เบžเบตเปˆเบกเบญเบฑเบ™เปƒเปเปˆเบœเปˆเบฒเบ™เบเบฐเบ”เบฒเบ™ admin sources/stocks เปƒเบ™ MSI (เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ) เบšเปเปˆเป„เบ”เป‰เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบฅเบฒเบเบเบฒเบ™เปƒเบซเบกเปˆเปƒเบ™ cataloginventory_stock.

เบ‚เปเป‰เบกเบนเบ™เบชเบดเบ™เบ„เป‰เบฒเบ„เบปเบ‡เบ„เบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป€เบเบปเปˆเบฒเปเบกเปˆเบ™เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡:

  • cataloginventory_stock_item
  • cataloginventory_stock_status

cataloginventory_stock_item

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);
}

cataloginventory_stock_status

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        |...|

เปเบฅเบฐเบซเบ™เบถเปˆเบ‡ "เบชเบฒเบ‡"(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|

เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เป‚เบ”เบเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™, เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบเบฒเบ™เบ‚เบฒเบเปเบกเปˆเบ™เบชเบปเบกเบกเบธเบ”, เปเบ•เปˆเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ "เบซเบธเป‰เบ™"-"เป€เบงเบฑเบšเป„เบŠเบ—เปŒ"(เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบฅเบฐเบซเบฑเบ”เป€เบงเบฑเบšเป„เบŠเบ—เปŒ - base).

เบซเบ™เบถเปˆเบ‡ "เบชเบฒเบ‡"เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบซเบผเบฒเบ"เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™"เปเบฅเบฐเบซเบ™เบถเปˆเบ‡"เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™"- เบซเบผเบฒเบ"เบชเบฒเบ‡" (เบ„เบงเบฒเบกโ€‹เบชเปเบฒโ€‹เบžเบฑเบ™โ€‹เบซเบผเบฒเบโ€‹เบ•เปเปˆโ€‹เบซเบผเบฒเบโ€‹)โ€‹. เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เปเบกเปˆเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™'เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™"เปเบฅเบฐ"เบชเบฒเบ‡". เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ„เบทเบ™เปƒเบซเบกเปˆเบเบฑเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบญเบทเปˆเบ™เป† (เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เปƒเบ™เบฅเบฐเบ”เบฑเบšเบฅเบฐเบซเบฑเบ” - เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” "เบšเปเปˆเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเปเบซเบผเปˆเบ‡ Default เบซเบผเบท Default Stock"). เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ MSI เปƒเบ™ Magento 2 เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบก "เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบชเบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰ CQRS เปเบฅเบฐเปเบซเบผเปˆเบ‡เป€เบซเบ”เบเบฒเบ™. เบญเบญเบโ€‹เปเบšเบš"

เบ‚เป‰เบญเบเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเป€เบžเบตเปˆเบกเบ‚เปเป‰เบกเบนเบ™เบชเบดเบ™เบ„เป‰เบฒเบ„เบปเบ‡เบ„เบฑเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบซเป‰เบเบฑเบšเปเบซเบผเปˆเบ‡ default, เป€เบŠเบดเปˆเบ‡เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบเบฒเบ™เบ‚เบฒเบเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ” 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);
}

เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบžเบตเปˆเบกเบ‚เปเป‰เบกเบนเบ™เบชเบดเบ™เบ„เป‰เบฒเบ„เบปเบ‡เบ„เบฑเบ‡เปƒเบชเปˆเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปƒเบ™เบเบฐเบ”เบฒเบ™ admin, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบฎเบนเบšเบ™เบตเป‰:

Magento 2: เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™

เบชเบทเปˆเบกเบงเบ™เบŠเบปเบ™

เป€เบกเบทเปˆเบญ "เบ„เบนเปˆเบกเบท" เป€เบžเบตเปˆเบกเบฎเบนเบšเบžเบฒเบšเปƒเบซเป‰เบเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบœเปˆเบฒเบ™เบเบฐเบ”เบฒเบ™ admin, เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ–เบทเบเบ‚เบฝเบ™เบฅเบปเบ‡เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • 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 โ€” เบ•เบปเบงโ€‹เบญเบฑเบโ€‹เบชเบญเบ™โ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹เปเบฅเบฐโ€‹เบ—เบตเปˆโ€‹เบชเบญเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบŠเบทเปˆโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป„เบŸเบฅเปŒ 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);
}

catalog_product_entity_varchar

เป„เบŸเบฅเปŒเบกเบตเป€เบ”เบเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบšเบปเบ”เบšเบฒเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ (เบฅเบฐเบซเบฑเบ”เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบงเบปเบ‡เป€เบฅเบฑเบš):

  • เบ–เบฒเบ™(image)
  • เบฎเบนเบšเบžเบฒเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ (small_image)
  • เบฎเบนเบšเบ•เบปเบงเบขเปˆเบฒเบ‡ (thumbnail)
  • เบฎเบนเบš Swatch (swatch_image)

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบšเบปเบ”เบšเบฒเบ”เบเบฑเบšเป„เบŸเบฅเปŒเบชเบทเปˆเบกเบงเบ™เบŠเบปเบ™เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™ catalog_product_entity_varchar. เบฅเบฐเบซเบฑเบ”เบœเบนเบเบกเบฑเบ”เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบฅเบฐเบซเบฑเบ”เปƒเบ™ "เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™"

เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบžเบตเปˆเบกเบฎเบนเบšเบžเบฒเบšเปƒเบชเปˆเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปƒเบ™เบเบฐเบ”เบฒเบ™ admin เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ:

Magento 2: เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™

เบซเบกเบงเบ”เบซเบกเบนเปˆ

เบ•เบฒโ€‹เบ•เบฐโ€‹เบฅเบฒเบ‡โ€‹เบ•เบปเป‰เบ™โ€‹เบ•เปโ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบ”เป‰เบงเบโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เป‚เบ”เบโ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹:

  • catalog_category_entity: เบ—เบฐเบšเบฝเบ™เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”;
  • catalog_category_product: เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบฅเบฐเบ›เบฐเป€เบžเบ”;
  • catalog_category_entity_*: EAV attribute values;

เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ 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 เบ—เบฑเบ‡เปเบปเบ” เปเบฅเบฐเบšเปเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบเบฐเบ”เบฒเบ™ admin เบซเบผเบทเปƒเบ™เปœเป‰เบฒ. เปเบงเบ”เปเบนเปˆเบ—เบตเปˆเบกเบต id=2 (เปเบงเบ”เปเบนเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™) เปเบกเปˆเบ™เบ›เบฐเป€เบžเบ”เบฎเบฒเบเบชเปเบฒเบฅเบฑเบšเบฎเป‰เบฒเบ™เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ•เบปเป‰เบ™เบ•เป (เบฎเป‰เบฒเบ™เบ„เป‰เบฒเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ•เบปเป‰เบ™เบ•เป) เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ–เบทเบเบ™เบณเปƒเบŠเป‰ (เป€เบšเบดเปˆเบ‡. Admin / เบฎเป‰เบฒเบ™เบ„เป‰เบฒ / เบฎเป‰เบฒเบ™เบ„เป‰เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”). เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ›เบฐเป€เบžเบ”เบฎเบฒเบเบ‚เบญเบ‡เบฎเป‰เบฒเบ™เป€เบญเบ‡เบเปเปˆเบšเปเปˆเบกเบตเบขเบนเปˆเบ—เบฒเบ‡เบซเบ™เป‰เบฒ, เบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเป€เบžเบ”เบเปˆเบญเบเบ‚เบญเบ‡เบกเบฑเบ™.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบซเบปเบงเบ‚เปเป‰เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบเบฑเบ‡เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™, เบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป‚เบ”เบเบเบปเบ‡เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ›เบฐเป€เบžเบ”, เปเบ•เปˆเบˆเบฐเปƒเบŠเป‰เบŠเบฑเป‰เบ™เบฎเบฝเบ™เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เป‚เบ”เบ 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โ€, เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปƒเบ™เปเบœเบ‡เบšเปเบฅเบดเบซเบฒเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบ”เบฑเปˆเบ‡เบ™เบตเป‰:

Magento 2: เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™

เบเบฒเบ™เบเบฐ เบ—เบณ เป€เบžเบตเปˆเบกเป€เบ•เบตเบก

เป€เบกเบทเปˆเบญเบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบ”เบฑเบ”เบชเบฐเบ™เบตเบ‚เปเป‰เบกเบนเบ™: เป‚เบ—เบซเบฒเปƒเบ™ console ./bin/magento indexer:reindex;
  • เบเบฒเบ™เบชเป‰เบฒเบ‡ URLs เบชเปเบฒเบฅเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™ / เบ›เบฐเป€เบžเบ”: เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ "elgentos/regenerate-catalog-urlsยซ

เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปƒเบ™เบเบฐเบ”เบฒเบ™ admin เบซเบผเบฑเบ‡เบˆเบฒเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก:

Magento 2: เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™

เปเบฅเบฐโ€‹เบขเบนเปˆโ€‹เบ—เบฒเบ‡โ€‹เบซเบ™เป‰เบฒโ€‹:

Magento 2: เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™

Summary

เบŠเบธเบ”เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ”เบฝเบงเบเบฑเบ™ (10 เบŠเบดเป‰เบ™) เบ„เบทเบเบฑเบšเบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ–เบทเบเบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เป„เบง (1 เบงเบดเบ™เบฒเบ—เบตเบ—เบฝเบšเบเบฑเบš 10). เป€เบžเบทเปˆเบญเบ›เบฐเป€เบกเบตเบ™เบ„เบงเบฒเบกเป„เบงเป„เบ”เป‰เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบซเบผเบฒเบ - เบซเบผเบฒเบเบฎเป‰เบญเบ, เบซเบผเบทเบ”เบตเบเบงเปˆเบฒเบซเบผเบฒเบเบžเบฑเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ‚เบญเบ‡เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฐเบซเบผเบธเบšเป„เบ”เป‰เบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป‚เบ”เบ Magento (เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เปเบฅเบฐเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™) เปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™ (เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบ™เบฑเป‰เบ™เบซเบ™เบฑเบ - เบซเบผเบฒเบ!) เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ (เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบ™เบฑเป‰เบ™เบซเบ™เบฑเบ - เบซเบผเบฒเบ!) เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเป„เบงเบ—เบตเปˆเบ‚เปเป‰เบกเบนเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ™เป‰เปเบฒเป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบŠเบธเปˆเบกเบŠเบทเปˆเบ™เปเบฅเบฐเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เป€เบ›เบตเบ”เป€เบœเบตเบ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเบกเบตเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบˆเบฐเบซเบฅเบดเป‰เบ™เบเบฑเบšเปเบฅเบฐเบšเบฒเบ‡เบ—เบตเบญเบฒเบ”เบกเบตเบšเบปเบ”เบชเบฐเบซเบผเบธเบšเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com