Π ΠΠΏΠΈΡΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ Π² Magento 2 ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ Π½Π°ΡΠΈΠ½ β ΡΡΠ΅Π· ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° Ρ Π΄ΠΎΡΡΠ° Π½ΠΈΡΠΊΠ° ΡΠΊΠΎΡΠΎΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠ° ΠΌΠΎΡ Π»Π°ΠΏΡΠΎΠΏ ΠΈΠ·Π»ΠΈΠ·Π°ΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ΄ΡΠΊΡ Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π°. Π ΡΠΎΠ²Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡ β Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π² Π±Π°Π·Π°ΡΠ°, Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠΉΠΊΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π½Π° Magento 2 (ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΠ°Π±ΡΠΈΠΊΠΈ, ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ). ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΡΠΏΠΊΠΈΡΠ΅ Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½Π° ΠΊΡΠΌ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ MySQL.
ΠΡΠΊΠ°Π·: Π Magento ΠΈΠΌΠ° Π³ΠΎΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΠΎ ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠΎΠΉ ΡΠ΅ Π²ΠΈ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π°ΠΊΠΎ Π²ΠΈ Π΅ Π½ΡΠΆΠ΅Π½ ΠΏΠΎ-ΠΏΡΠ»Π΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ» Π²ΡΡΡ Ρ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° Π΄ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° CSV ΡΠ°ΠΉΠ» Π·Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠΌΠ°ΡΠ΅ β Π·Π°ΠΏΠΎΠ²ΡΠ΄Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ ΠΊΠ°Ρ.

ΠΠΎΠ΄ΡΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½ Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π²Π΅ΡΠ΅ ΡΡΠ°ΡΠΈΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ Π² Magento ΠΌΠΎΠ΄ΡΠ»Π° ββ. ΠΡΠΎ Π½ΡΠΊΠΎΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ΄ΡΡΠΆΠ°Ρ , Π·Π° Π΄Π° ΠΎΠΏΡΠΎΡΡΡ ΠΊΠΎΠ΄Π° Π½Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»:
- ΠΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ, Π½Π΅ ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Ρ.
- ΠΠ΄ΠΈΠ½ ΡΠΊΠ»Π°Π΄
- ΠΠΌΠΏΠΎΡΡΠΈΡΠ²Π°Ρ ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈΡΠ΅, Π±Π΅Π· ΡΡΡ Π½Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ°
- Π‘ΡΡΡΠΊΡΡΡΠΈΡΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° Π²Π΅ΡΡΠΈΡ 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`)
)ΠΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅:
ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π°Π±ΠΎΡΠ° Π°ΡΡΠΈΠ±ΡΡΠΎΠ²sku
Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π°:
ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΡΠΈΠΏΠ°β Π°ΠΊΠΎ Π½Π΅ ΠΏΠΎΡΠΎΡΠΈΠΌ, ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° βsimpleβ
ΠΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π² Π±Π°Π·Π°ΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ 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 ΡΠΎΠΉ ΡΡΠ°Π²Π° Π²ΠΈΠ΄ΠΈΠΌ Π² Π°Π΄ΠΌΠΈΠ½ ΠΏΠ°Π½Π΅Π»Π°, Π² Π³ΡΠΈΠ΄Π° Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ (ΠΠ°ΡΠ°Π»ΠΎΠ³ / ΠΡΠΎΠ΄ΡΠΊΡΠΈ).

ΠΡΡΠ·ΠΊΠ° Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΈ ΡΠ΅Π±ΡΠ°ΠΉΡΠ°
ΠΡΡΠ·ΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Ρ ΡΠ΅Π±ΡΠ°ΠΉΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π² ΠΊΠΎΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΈ ΠΈ Π½Π° ΠΊΠ°ΠΊΠ²ΠΈ Π²ΠΈΡΡΠΈΠ½ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ Π½Π° ΡΡΠΎΠ½ΡΠ°.
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);
}
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ°
ΠΠΎΠ²ΠΎΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡ Π²ΡΠ΅ ΠΎΡΠ΅ Π½ΡΠΌΠ° Π½ΠΈΡΠΎ ΠΈΠΌΠ΅, Π½ΠΈΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅. ΠΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΡΡΠ΅Π· . ΠΡΠΎ ΡΠΏΠΈΡΡΠΊ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π½Π° ΡΡΠΎΠ½ΡΠ°:
ΠΈΠΌΠ΅priceΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΊΡΠ°ΡΠΊΠΎ_ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΡΠ°ΡΡΡΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° Π΄Π°Π½ΡΡΠ½ΠΈΡ ΠΊΠ»Π°Ρurl ΠΊΠ»ΡΡΠ²ΠΈΠ΄ΠΈΠΌΠΎΡΡ
ΠΡΠ΄Π΅Π»Π΅Π½ Π°ΡΡΠΈΠ±ΡΡ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½ (ΠΏΡΠΎΠΏΡΡΠ½Π°ΡΠΈ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΈ ΡΠΈΠΏΠ° Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ° ΠΏΠΎ Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΊΠΎΠ΄):
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);
}
}ΠΠΎ ΠΊΠΎΠ΄Π° Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΈΠ΄ ΠΈ ΡΠΈΠΏ Π΄Π°Π½Π½ΠΈ (datetime, Π΄Π΅ΡΠ΅ΡΠΈΡΠ΅Π½, int, ntext, varchar), ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π² ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ° Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ Π·Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½Π°ΡΠ° Π²ΠΈΡΡΠΈΠ½Π° (store_id = 0).
Π‘Π»Π΅Π΄ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π³ΠΎΡΠ΅ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΊΡΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠ°ΡΡΠΈΠ½Π° Π² Π°Π΄ΠΌΠΈΠ½ ΠΏΠ°Π½Π΅Π»Π°:

ΠΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ
ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΡ 2.3, Π² Magento ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ Π΄Π²Π° Π½Π°Π±ΠΎΡΠ° ΡΠ°Π±Π»ΠΈΡΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΡΠΈ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ°):
cataloginventory_*: ΡΡΠ°ΡΠ°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ°;inventory_*: Π½ΠΎΠ²Π° ΡΡΡΡΠΊΡΡΡΠ° (MSI β ΠΠ½ΠΎΠ³ΠΎΠΈΠ·ΡΠΎΡΠ΅Π½ ΠΈΠ½Π²Π΅Π½ΡΠ°Ρ);
Π’ΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Π² Π΄Π²Π΅ΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½ΠΎΠ²Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ° ΠΎΡ ΡΡΠ°ΡΠ°ΡΠ° (ΠΌΠ½ΠΎΠ³ΠΎ Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ΅ Π·Π° default ΡΠΊΠ»Π°Π΄Π° Π² Π½ΠΎΠ²Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° cataloginventory_stock_status ΠΊΠ°ΡΠΎ inventory_stock_1).
cataloginventory_
ΠΡΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° Magneto 2.3 ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ 2 Π·Π°ΠΏΠΈΡΠ° Π² store_website, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° Π΄Π²Π° ΡΠ°ΠΉΡΠ° β Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π΅Π½ ΠΈ ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ:
website_id|code |name |sort_order|default_group_id|is_default|
----------|-----|------------|----------|----------------|----------|
0|admin|ΠΠ΄ΠΌΠΈΠ½ | 0| 0| 0|
1|base |ΠΡΠ½ΠΎΠ²Π΅Π½ ΡΠ°ΠΉΡ| 0| 1| 1|Π ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° cataloginventory_stock ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ Π·Π°ΠΏΠΈΡ:
stock_id|website_id|stock_name|
--------|----------|----------|
1| 0|ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅|Π’.Π΅., Π² ΡΡΠ°ΡΠ°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ Β«ΡΠΊΠ»Π°Π΄Β» (stock) ΠΈ ΡΠΎΠΉ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈΡ ΡΠ°ΠΉΡ. ΠΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ sources/stocks Π² MSI (Π½ΠΎΠ²Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ°) Π½Π΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° Π½ΠΎΠ²ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² cataloginventory_stock.
ΠΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ Π² ΡΡΠ°ΡΠ°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π² ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅:
cataloginventory_stock_itemcataloginventory_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,
/* Π² 'cataloginventory' ΡΡΡΡΠΊΡΡΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΡΠΊΠ»Π°Π΄ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ */
'stock_id' => 1,
'qty' => $qty,
'is_qty_decimal' => $isQtyDecimal,
'is_in_stock' => $isInStock,
/* ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠΊΠ»Π°Π΄ΡΡ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈΡ ΡΠ°ΠΉΡ (Π²ΠΈΠΆΡΠ΅ `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,
/* Π² 'cataloginventory' ΡΡΡΡΠΊΡΡΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΡΠΊΠ»Π°Π΄ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ */
'stock_id' => 1,
'qty' => $qty,
'stock_status' => MagentoCatalogInventoryApiDataStockStatusInterface::STATUS_IN_STOCK,
/* ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠΊΠ»Π°Π΄ΡΡ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈΡ ΡΠ°ΠΉΡ (Π²ΠΈΠΆΡΠ΅ `cataloginventory_stock`) */
'website_id' => 0
];
$conn->insert($table, $bind);
}inventory_
ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π½ΠΎΠ²Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π·Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ ΡΡΠ΄ΡΡΠΆΠ° 1 Β«ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΒ» (inventory_source):
source_code|name |enabled|description |latitude|longitude|country_id|...|
-----------|--------------|-------|--------------|--------|---------|----------|...|
default |ΠΡΠ½ΠΎΠ²Π΅Π½ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ| 1|ΠΡΠ½ΠΎΠ²Π΅Π½ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ|0.000000| 0.000000|Π‘ΠΠ© |...|ΠΈ Π΅Π΄ΠΈΠ½ Β«ΡΠΊΠ»Π°Π΄Β» (inventory_stock):
stock_id|name |
--------|-------------|
1|ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ |Β«ΠΠ·ΡΠΎΡΠ½ΠΈΠΊΒ» Π΅ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ (Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈ ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈ Π°Π΄ΡΠ΅Ρ). Β«Π‘ΠΊΠ»Π°Π΄Β» Π΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Β«ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΠ°Β» (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|Π‘ΠΏΠΎΡΠ΅Π΄ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΊΠ°Π½Π°Π»ΠΈ Π·Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π°, Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎ Π²ΡΡΠ·ΠΊΠ°ΡΠ° Β«stockΒ«-Β«websiteΒ» (Π²ΡΡΠ·ΠΊΠ°ΡΠ° Ρ ΡΠ΅Π±ΡΠ°ΠΉΡΠ° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠΎ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ΅Π±ΡΠ°ΠΉΡΠ° β base).
ΠΠ΄ΠΈΠ½ Β«ΡΠΊΠ»Π°Π΄Β» ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Β«ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΠ°Β«, Π° Π΅Π΄ΠΈΠ½ Β«ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΒ» β Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Β«ΡΠΊΠ»Π°Π΄Π°Β» (ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«ΠΌΠ½ΠΎΠ³ΠΎ-Π΄ΠΎ-ΠΌΠ½ΠΎΠ³ΠΎΒ»). ΠΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ° Π΄Π΅ΡΠΎΠ»ΡΠ½ΠΈΡΠ΅ Β«ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΒ» ΠΈ Β«ΡΠΊΠ»Π°Π΄Β«. Π’Π΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈ ΠΊΡΠΌ Π΄ΡΡΠ³ΠΈ ΡΡΡΠ½ΠΎΡΡΠΈ (ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ΄ β ΠΈΠ·Π»ΠΈΠ·Π° Π³ΡΠ΅ΡΠΊΠ° Β«ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠ°Π·ΠΈ Π²ΡΡΠ·ΠΊΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΠ΅ΡΠΎΠ»ΡΠ΅Π½ ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ ΠΈΠ»ΠΈ ΠΠ΅ΡΠΎΠ»ΡΠ΅Π½ Π‘ΠΊΠ»Π°Π΄Β«). ΠΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π·Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° MSI Π² Magento 2 ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π² ΡΡΠ°ΡΠΈΡΡΠ° ««.
Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΡΡΠ»Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠ° Π² ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΠ° default, ΠΊΠΎΠΉΡΠΎ Π΅ Π°Π½Π³Π°ΠΆΠΈΡΠ°Π½ Π² ΠΊΠ°Π½Π°Π»Π° Π·Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π°, ΡΠ²ΡΡΠ·Π°Π½ Ρ ΡΠ΅Π±ΡΠ°ΠΉΡΠ° Ρ ΠΊΠΎΠ΄ base (ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°ΡΠ° ΡΠ°ΡΡ Π½Π° ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° β Π²ΠΈΠΆte. 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: ΠΌΠ΅Π΄ΠΈΠΉΠ½ register (ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅);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, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ ΠΎΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
catalog_product_entity_media_gallery
Π Π΅Π³ΠΈΡΡΡΠΈΡΠ°ΠΌΠ΅ ΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π² . /pub/media/catalog/product/ ΠΌΠ΅Π΄ΠΈΠ΅Π½ ΡΠ°ΠΉΠ» (ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π° ΠΊΠ°ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»Π° Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π½Π΅ Π΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°Π½):
function createMediaGallery($imgPathPrefixed)
{
$attrId = /* ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° Π°ΡΡΠΈΠ±ΡΡ ΠΏΠΎ ΠΊΠΎΠ΄ Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ° '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' ΠΈΠ»ΠΈ 'video' */
'media_type' => 'image',
'disabled' => false
];
$conn->insert($table, $bind);
$result = $conn->lastInsertId($table);
return $result;
}ΠΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Π½ΠΎΠ² ΠΌΠ΅Π΄ΠΈΠ΅Π½ ΡΠ°ΠΉΠ» ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ.
catalog_product_entity_media_gallery_value
Π‘Π²ΡΡΠ·Π²Π°ΠΌΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈΡ ΠΌΠ΅Π΄ΠΈΠ΅Π½ ΡΠ°ΠΉΠ» Ρ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡ Π·Π° default Π²ΠΈΡΡΠΈΠ½Π°ΡΠ°:
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,
/* ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΠΊΠ° Π²ΠΈΡΡΠΈΠ½Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ */
'store_id' => 0,
'entity_id' => $prodId,
'label' => null,
/* ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ */
'position' => 1,
'disabled' => false
];
$conn->insert($table, $bind);
}catalog_product_entity_media_gallery_value_to_entity
Π‘Π²ΡΡΠ·Π²Π°ΠΌΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈΡ ΠΌΠ΅Π΄ΠΈΠ΅Π½ ΡΠ°ΠΉΠ» Ρ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡ Π±Π΅Π· ΠΏΡΠΈΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° Π²ΠΈΡΡΠΈΠ½Π°. ΠΠ΅ Π΅ ΡΡΠ½ΠΎ ΠΊΡΠ΄Π΅ ΡΠΎΡΠ½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Π·Π°ΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ°, Π½ΠΎ ΡΠ°Π·ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΈ Π΄Π°Π½Π½ΠΈΡΠ΅ Π² Π½Π΅Ρ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΠ°ΡΠΎΠ²Π° Π΅ ΡΠ°ΠΊΠ°.
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
ΠΠ΅Π΄ΠΈΠΉΠ½ΠΈΡΡ ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΎΠ»ΠΈ (Π² ΡΠΊΠΎΠ±ΠΈΡΠ΅ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ΡΡ Π½Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡ):
- ΠΡΠ½ΠΎΠ²Π΅Π½ (
ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅) - ΠΠ°Π»ΠΊΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (
small_image) - Π’ thumbnail (
thumbnail) - Swatch ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (
swatch_image)
ΠΡΠΈΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ»ΠΈΡΠ΅ ΠΊΡΠΌ ΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΈΡ ΡΠ°ΠΉΠ» ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠΎΡΠ½ΠΎ Π² catalog_product_entity_varchar. ΠΠΎΠ΄ΡΡ Π·Π° ΠΏΡΠΈΠ²ΡΡΠ·Π²Π°Π½Π΅ Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ Π½Π° ΠΊΠΎΠ΄Π° Π² ΡΠ°Π·Π΄Π΅Π»Π° βΠΡΠ½ΠΎΠ²Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Β«.
Π‘Π»Π΅Π΄ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π² Π°Π΄ΠΌΠΈΠ½ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:

ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ
ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈΡΠ΅:
catalog_category_entity: ΡΠ΅Π³ΠΈΡΡΡΡ Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈΡΠ΅;catalog_category_product: ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ ΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ;catalog_category_entity_*: ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° EAV Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅;
ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ, Π² ΠΏΡΠ°Π·Π½ΠΎ Magento ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅Π³ΠΈΡΡΡΠ° Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈΡΠ΅ ΠΈΠΌΠ° 2 ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ (ΡΡΠΊΡΠ°ΡΠΈΠ» ΡΡΠΌ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅: crt β created_at, ΡΠΏΠ΄Π΅ΠΉΡ β 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 (ΠΡΠ½ΠΎΠ²Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ) Π΅ ΠΊΠΎΡΠ΅Π½ΠΎΠ²Π°ΡΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Π·Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΡΠ°ΠΉΡ (Main Website Store), ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° ΠΏΡΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ (Π²ΠΈΠΆΡΠ΅: Admin / Stores / All Stores). ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΠ°ΠΌΠ°ΡΠ° ΠΊΠΎΡΠ΅Π½ΠΎΠ²Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Π½Π° ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π½Π΅ Π΅ Π½Π°Π»ΠΈΡΠ½Π° Π½Π° ΡΡΠΎΠ½ΡΠ°, ΡΠ°ΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈΡΠ΅ ΠΉ.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ΠΌΠ°ΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ Π²Π½Π°ΡΡΠ½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ, Π½ΡΠΌΠ° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π² Π±Π°Π·Π°ΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈΡΠ΅, Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΠΊΠ»Π°ΡΠΎΠ²Π΅ΡΠ΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ ΡΠ°ΠΌΠ°ΡΠ° 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 Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ/ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ: ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ "Β«
ΠΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ Π² Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΡΡΠ° ΡΠ»Π΅Π΄ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:

ΠΈ Π½Π° ΡΡΠΎΠ½ΡΠ°:

Π Π΅Π·ΡΠΌΠ΅
Π‘ΡΡΠΈΡΡ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ (10 Π±ΡΠΎΡ), ΠΊΠΎΠΉΡΠΎ Π±Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° ΡΡΠ°ΡΠΈΡ, ΡΠ΅ Π²Π½Π°ΡΡ ΠΏΠΎΠ½Π΅ Ρ ΠΏΠΎΡΡΠ΄ΡΠΊ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ (1 ΡΠ΅ΠΊΡΠ½Π΄Π° ΡΡΠ΅ΡΡ 10). ΠΠ° ΠΏΠΎ-ΡΠΎΡΠ½Π° ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° ΡΠ° Π½ΡΠΆΠ½ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ β Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠΎΡΠΈΠ½, Π° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Ρ ΠΈΠ»ΡΠ΄ΠΈ. ΠΡΠ΅ ΠΏΠ°ΠΊ, Π΄ΠΎΡΠΈ ΠΏΡΠΈ ΡΠ°ΠΊΡΠ² ΠΌΠ°Π»ΡΠΊ ΠΎΠ±Π΅ΠΌ Π²Ρ ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°ΠΊΠ»ΡΡΠΈΠΌ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ Magento (ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ), Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ (ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π°ΠΌ β Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ!) ΡΡΠΊΠΎΡΡΠ²Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, Π½ΠΎ ΡΡΡΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ (ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π°ΠΌ β Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ!) Π½Π°ΠΌΠ°Π»ΡΠ²Π°Ρ ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° Π²Π½Π°ΡΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π² Π±Π°Π·Π°ΡΠ°.
Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π²ΠΎΠ΄Π°ΡΠ° ΡΠ΅ ΠΎΠΊΠ°Π·Π° ΠΌΠΎΠΊΡΠ° ΠΈ ΡΠΎΠ²Π° Π½Π΅ Π΅ ΠΎΡΠΊΡΠΈΡΠΈΠ΅. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΠ΅Π³Π° ΠΈΠΌΠ°ΠΌ ΠΊΠΎΠ΄, Ρ ΠΊΠΎΠΉΡΠΎ Π΄Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌ ΠΈ, ΠΌΠΎΠΆΠ΅ Π±ΠΈ, Π΄Π° Π½Π°ΠΏΡΠ°Π²Ρ ΠΏΠΎ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ½ΠΈ ΠΈΠ·Π²ΠΎΠ΄ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
