import - 通过 CSV 导入自定义相关产品
问题描述
0
我已经为替代产品创建了一个自定义选项卡,并且必须通过 CSV 导入 SKU,例如 CSV 中的related_sku。我无法在产品后端的自定义替代产品选项卡中导入我的产品。请指导我如何使用 CSV 实现此导入。
我尝试在核心 magento 的导入模块中进行添加,以查看是否导入了新字段并与产品替代产品相关联
解决方案
如果您已经在模块中创建了新的关系类型,请尝试此补丁。
在 Magento 2.3.1 版本上验证
diff --git a/vendor/magento/module-catalog-import-export/Model/Import/Product.php b/vendor/magento/module-catalog-import-export/Model/Import/Product.php
index dc9d219..0e19ef8 100644
--- a/vendor/magento/module-catalog-import-export/Model/Import/Product.php
+++ b/vendor/magento/module-catalog-import-export/Model/Import/Product.php
@@ -226,6 +226,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
'_related_' => \Magento\Catalog\Model\Product\Link::LINK_TYPE_RELATED,
'_crosssell_' => \Magento\Catalog\Model\Product\Link::LINK_TYPE_CROSSSELL,
'_upsell_' => \Magento\Catalog\Model\Product\Link::LINK_TYPE_UPSELL,
+ '_custom_related_' => \vendor\Module\Model\Product::LINK_TYPE_CUSTOM_RELATED,
];
/**
@@ -334,6 +335,8 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
'min_sale_qty' => 'min_cart_qty',
'max_sale_qty' => 'max_cart_qty',
'notify_stock_qty' => 'notify_on_stock_below',
+ '_custom_related_sku' => 'custom_related_sku',
+ '_custom_related_position' => 'custom_related_position',
'_related_sku' => 'related_skus',
'_related_position' => 'related_position',
'_crosssell_sku' => 'crosssell_skus',
@@ -1257,7 +1260,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
$nextLinkId = $this->_resourceHelper->getNextAutoincrement($mainTable);
// pre-load 'position' attributes ID for each link type once
- foreach ($this->_linkNameToId as $linkName => $linkId) {
+ foreach ($this->getLinkNameToId() as $linkName => $linkId) {
$select = $this->_connection->select()->from(
$resource->getTable('catalog_product_link_attribute'),
['id' => 'product_link_attribute_id']
@@ -1292,7 +1295,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
$linkKey = "{$productId}-{$linkData['linked_id']}-{$linkData['link_type_id']}";
$productLinkKeys[$linkKey] = $linkData['id'];
}
- foreach ($this->_linkNameToId as $linkName => $linkId) {
+ foreach ($this->getLinkNameToId() as $linkName => $linkId) {
$productIds[] = $productId;
if (isset($rowData[$linkName . 'sku'])) {
$linkSkus = explode($this->getMultipleValueSeparator(), $rowData[$linkName . 'sku']);
@@ -2333,6 +2336,16 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
}
/**
+ * Attribute set ID-to-name pairs getter.
+ *
+ * @return array
+ */
+ public function getLinkNameToId()
+ {
+ return $this->_linkNameToId;
+ }
+
+ /**
* DB connection getter.
*
* @return \Magento\Framework\DB\Adapter\AdapterInterface
推荐阅读
- django - 无法连接到 amqp://guest:**@127.0.0.1:5672//: [Errno 111] 连接被拒绝
- sql-server - 如何在 MSSQL 中将 YYYY-MM-DD HH:MI:SS 格式转换为 MM-DD-YYYY HH:MI:SS
- ruby - 我怎样才能跳出双'if'块?
- php - 雄辩的关系没有输出
- python - 如何在没有 GUI 的情况下在 Web 上执行操作
- sql-server - 将参数默认值设置为日期/时间
- file-conversion - Firehose 记录格式转换分区
- node.js - 将标头发送到节点js中的客户端后无法设置标头
- mysql - ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' in ubuntu for install mysql
- swift - 使用未解析的标识符 swift 3