ProHoster > Blog > Pulega > Magento 2: fa'aulu sa'o mai oloa ile fa'amaumauga
Magento 2: fa'aulu sa'o mai oloa ile fa'amaumauga
В mataupu muamua Na ou faamatalaina le faagasologa o le faaulufaleina mai o oloa i totonu o Magento 2 i le auala masani - e ala i faʻataʻitaʻiga ma faleoloa. O le auala masani e maualalo tele le saoasaoa o faʻamaumauga. O la'u komepiuta feavea'i na gaosia pe tusa ma le tasi le oloa i le sekone. I lenei faʻaauau, ou te mafaufau i se isi auala e faʻaulufale mai ai se oloa - e ala i le tuʻuina saʻo i totonu o faʻamaumauga, faʻafeiloaʻi le tulaga masani Magento 2 (faʻataʻitaʻiga, faleoloa, faleoloa). O le fa'asologa o laasaga e fa'aulufale mai ai oloa e mafai ona fa'afetaui i so'o se gagana fa'apolokalame e mafai ona galue ma MySQL.
Tuuese: Magento ua saunia-faia galuega mo fa'amatalaga fa'aulufale mai ma, e foliga mai, o le a lava mo oe. Ae peita'i, afai e te mana'omia le fa'atonuina atoatoa o le fa'aulufale mai, e le gata i le sauniaina o se faila CSV mo mea o lo'o ia te oe, fa'afeiloa'i ile pusi.
O le faʻailoga e mafua mai i le tusiaina o tala e lua e mafai ona vaʻaia i le Magento module "flancer32/mage2_ext_demo_import". O nisi nei o tapulaʻa na ou mulimulitaʻia e faʻafaigofie ai le code module demo:
O oloa e na'o le fausiaina, e le'o fa'afouina.
Tasi faleteuoloa
Na'o igoa o vaega e fa'aulufale mai, e aunoa ma le latou fausaga
O fa'amaumauga o fa'amaumauga e ogatasi ma le version 2.3
JSON mo le fa'aulufaleina mai o se oloa e tasi:
{
"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"
}
Vaaiga lautele o vaega autu o le faaulufale mai
resitalaina o le oloa lava ia
feso'ota'iga i le va o oloa ma le upega tafa'ilagi
uiga autu o oloa (EAV)
fa'amaumauga o fa'amaumauga (tele o oloa o lo'o i totonu o fa'asoa)
ala o faasalalauga (ata)
feso'ota'iga ma fa'avasegaga fa'amaumauga
Faamauina o oloa
E mafai ona maua fa'amatalaga autu o oloa ile 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`)
)
Ole fa'amatalaga la'ititi e mana'omia e fai ai se fa'amatalaga ile resitala o oloa ole:
attribute_set_id
sku
fa'aopoopo:
type_id - afai tatou te le faʻamaonia, ona 'faigofie' o le a faʻaaogaina
Ina ia tusi saʻo i le database, ou te faʻaogaina le DB adapter o Magento lava ia:
Ole oloa faatoa resitalaina e le'i iai se igoa po'o se fa'amatalaga. O nei mea uma e faia EAV uiga. Ole lisi lea o uiga fa'avae oloa e mana'omia ina ia fa'aalia sa'o le oloa ile pito i luma:
name
price
description
short_description
status
tax_class_id
url_key
visibility
E fa'aopoopoina se uiga ese'ese i se oloa fa'apenei (o fa'amatalaga o le mauaina o le fa'amatalaga ma le ituaiga o uiga mai lona fa'ailoga ua le maua):
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);
}
}
I le faʻaaogaina o le faʻailoga uiga, matou te fuafuaina lona id ma faʻamaumauga (datetime, decimal, int, text, varchar), ona tusi lea o faʻamatalaga mo le faʻamalama pulega i totonu o le laulau talafeagai (store_id = 0).
A maeʻa ona faʻaopoopo uiga o loʻo i luga i le oloa, e te mauaina le ata lea i le admin panel:
Fa'amaumauga o fa'amaumauga
Amata mai le version 2.3 i Magento, e lua seti tutusa o laulau o loʻo tuʻuina atu ai le teuina o faʻamatalaga faʻamaumauga (tele oloa):
cataloginventory_*: fausaga tuai;
inventory_*: fausaga fou (MSI - Multi Source Inventory);
E te manaʻomia le faʻaopoopoina o faʻamaumauga o suʻesuʻega i fausaga uma e lua, aua o le fausaga fou e leʻi tutoʻatasi atoatoa mai le mea tuai (e foliga mai mo default faleteuoloa i le fausaga fou e aofia ai se laulau cataloginventory_stock_status e pei inventory_stock_1).
cataloginventory_
Pe a faʻaaogaina le Magneto 2.3 muamua matou te maua 2 faʻamaumauga i totonu store_website, lea e fetaui ma nofoaga e lua - pulega ma le kalani autu:
O lona uiga, i totonu o le matou fausaga tuai e naʻo le tasi le "fale teu oloa" (stock) ma o loʻo fesoʻotaʻi atu i le upega tafaʻilagi a le pulega. Fa'aopoopo mea fou e ala i le admin panel sources/stocks i le MSI (faatulagaga fou) e le maua ai ni fa'amaumauga fou i totonu cataloginventory_stock.
O fa'amaumauga o fa'amaumauga e uiga i oloa i le fausaga tuai o lo'o fa'amauina muamua i laulau:
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);
}
inventory_
I le taimi muamua, o le fausaga fou mo le teuina o faʻamaumauga faʻamaumauga e aofia ai le 1 "punavai"(inventory_source):
«Punaoa» o lo'o fa'atusalia le teuina fa'aletino mo oloa (o lo'o iai fa'amaumauga fa'apitoa ma tuatusi meli). "Fale teu oloa"o se fa'atasiga talafeagai o le tele o" puna'oa (inventory_source_stock_link)
i le tulaga o loʻo tupu ai le fesoʻotaʻiga i le auala faʻatau (inventory_stock_sales_channel)
type |code|stock_id|
-------|----|--------|
website|base| 1|
Faʻamasinoina i le faʻatulagaina o faʻamaumauga, o ituaiga eseese o auala faʻatau e faʻaaogaina, ae naʻo le faʻaogaina o le fesoʻotaʻiga "oloa"-"website"(o le sootaga i le upega tafaʻilagi e mulimuli i le upega tafaʻilagi code - base).
Tasi "faletupe"e mafai ona faʻafesoʻotaʻi i nisi"i punaoa"ma le tasi"punavai"- i ni nai"faleteuoloa"(tele-i-tele sootaga). O tuusaunoaga e faaletonu "punavai"Ma"faletupe". Latou te le toe faʻafesoʻotaʻi i isi faʻalapotopotoga (faʻatapulaʻa i le tulaga faʻailoga - o le mea sese "E le mafai ona fa'asaoina so'oga e feso'ota'i ma Punavai Fa'aleaogaina po'o Fa'asoa Fa'atonu"). O nisi faʻamatalaga e uiga i le fausaga MSI i Magento 2 e mafai ona maua i le tusiga "Faiga fa'afoega o faleteuoloa e fa'aaoga ai le CQRS ma le Fa'asologa o Mea. Fuafuaga".
O le a ou faʻaogaina le faʻaoga le faʻaogaina ma faʻaopoopo uma faʻamatalaga faʻamaumauga i le puna default, lea o loʻo aʻafia i le auala faʻatau e fesoʻotaʻi ma le upega tafaʻilagi ma le code base (e fetaui ma le pito i luma o le faleoloa - vaʻai store_website):
A maeʻa ona faʻaopoopo faʻamaumauga faʻamaumauga i le oloa ile admin panel, e te mauaina le ata lenei:
Faasalalauga
Pe a "lima" faʻaopoopoina se ata i se oloa e ala i le admin panel, o faʻamatalaga talafeagai e tusia i lalo i laulau nei:
catalog_product_entity_media_gallery: resitala o ala o faasalalauga (ata ma faila vitio);
catalog_product_entity_media_gallery_value: feso'ota'i fa'asalalauga i oloa ma fa'aaliga (localization);
catalog_product_entity_media_gallery_value_to_entity: fa'afeso'ota'i ala fa'asalalau i na'o oloa (atonu e le'i fa'aogaina mea fa'asalalau mo le oloa);
catalog_product_entity_varchar: O matafaioi o loʻo faʻaogaina ai le ata o loʻo teuina iinei;
ma o ata lava ia e teuina i le lisi ./pub/media/catalog/product/x/y/fea x и y - mataitusi muamua ma le lua o le igoa faila ata. Mo se faʻataʻitaʻiga, faila image.png e tatau ona faasaoina e pei ./pub/media/catalog/product/i/m/image.png, ina ia mafai e le faʻavae ona faʻaaogaina o se ata pe a faʻamatalaina oloa mai le faʻamaumauga.
catalog_product_entity_media_gallery
Resitala lafo i totonu ./pub/media/catalog/product/ faila faila (o le faagasologa o le tuʻuina o le faila lava ia e le o talanoaina i lenei tusiga):
Matou te fa'afeso'ota'ia le faila fa'asalalau fa'asalalau ma le oloa fa'atatau e aunoa ma le nonoa i so'o se faleoloa. E le o manino poʻo fea tonu o loʻo faʻaogaina ai nei faʻamatalaga ma pe aisea e le mafai ai ona maua faʻamatalaga mai le laulau muamua, ae o loʻo i ai lenei laulau ma o loʻo tusia i ai faʻamatalaga pe a faʻaopoopo se ata i le oloa. O lea la.
E mafai ona fa'aogaina se faila fa'asalalau i ni matafaioi eseese (o lo'o fa'aalia le fa'ailoga o uiga fa'atatau i puipui):
faavae(image)
Ata Laiti (small_image)
Ata lima (thumbnail)
Swatch Ata (swatch_image)
Fa'afeso'ota'i matafaioi i se faila fa'asalalau o le mea tonu lava lea e tupu i totonu catalog_product_entity_varchar. O le faʻamaufaʻailoga e tutusa ma le code i le "Uiga autu o oloa".
A maeʻa ona faʻapipiʻi se ata i le oloa i le admin panel e pei o lenei:
Vaega
Laupapa autu o lo'o iai fa'amaumauga i vaega:
catalog_category_entity: resitala o vaega;
catalog_category_product: sootaga i le va o oloa ma vaega;
catalog_category_entity_*: EAV uiga taua;
I le taimi muamua, i totonu o se talosaga Magento gaogao, o le resitala vaega e aofia ai vaega e 2 (Na ou faapuupuuina igoa koluma: crt - created_at, upd - updated_at):
Ole vaega ile id=1 ole a'a ole lisi atoa o Magento ma e le o maua ile admin panel po'o luga ole itulau pito i luma. Vaega ma id=2 (Vasega Fa'atonu) o le vaega a'a mo le faleoloa autu a le nofoaga autu (Faleoloa Upega Tafa'ilagi Autu) faia pe a faʻapipiʻiina le talosaga (vaai. Pule / Faleoloa / Faleoloa Uma). E le gata i lea, o le aʻa o le faleoloa lava ia e le o maua i luma, naʻo ona vaega laiti.
Talu ai o le autu o lenei tusiga o loʻo faʻauluina pea faʻamatalaga i luga o oloa, o le a ou le faʻaogaina saʻo i totonu o le database pe a fatuina vaega, ae o le a faʻaaogaina vasega na saunia e Magento lava ia (faʻataʻitaʻiga ma faleoloa). O le fa'aoga sa'o i totonu o fa'amaumauga e fa'aoga na'o le fa'afeso'ota'i o oloa fa'aulufale mai ma se vaega (o le vaega e fetaui ma lona igoa, ma le vaega id e toe maua i le taimi o le fa'atusa):
O oloa i le admin panel pe a uma ona faia ni gaioiga faaopoopo:
ma i luma:
Aotelega
O le seti tutusa o oloa (10 fasi pepa) e pei ona i ai i le mataupu muamua o loʻo faʻaulufaleina mai ia le itiiti ifo ma le faʻatonuina o le tele vave (1 sekone faʻatusatusa i le 10). Ina ia sili atu ona saʻo le faʻatusatusaina o le saoasaoa, e te manaʻomia se numera tele o oloa - e fia selau, pe sili atu le afe. Ae ui i lea, e tusa lava pe laʻititi laʻititi o faʻamatalaga faʻapipiʻi, e mafai ona tatou faʻamaonia o le faʻaaogaina o meafaigaluega na tuʻuina mai e Magento (faʻataʻitaʻiga ma fale teu oloa) e taua tele (Ou te faamamafaina - taua!) faʻavaveina le atinaʻeina o galuega manaʻomia, ae i le taimi lava e tasi e taua tele (Ou te faamamafa atu - taua!) fa'aitiitia le saoasaoa e maua ai fa'amaumauga i totonu o fa'amaumauga.
O le i'uga, na susū le vai ma e le o se fa'aaliga lea. Ae ui i lea, o lea ua ia te aʻu le code e taʻalo ai ma atonu o le a oʻo mai i ni faʻaiuga sili atu ona manaia.