honl/magento2-import

此包的最新版本(v1.3.4)没有提供许可证信息。

安装: 110

依赖: 0

建议者: 0

安全: 0

星标: 38

观察者: 11

分支: 20

公开问题: 9

类型:magento2-module

v1.3.4 2023-08-30 07:26 UTC

README

导入库,用于创建用于导入产品/类别的数组接口。Ho_Import建立在Magento的内部导入/导出模块之上。

库的目标是成为Magento 2导入产品的瑞士军刀。功能包括

  • 通过HTTP和磁盘流式传输XML
  • 从HTTP(s)/FTP下载文件
  • 将源文件中的项目映射到Magento格式
  • 大量的 行修改器
  • 修复了导入核心的bug

ExampleProfile.php

安装

composer config repositories.honl/magento2-import vcs git@github.com:ho-nl/magento2-Ho_Import.git
composer require honl/magento2-import

目标

性能:由于构建导入(真的很困难)需要大量反馈循环才能正确地获取数据(更改、检查、更改、检查),因此确保其尽可能快是绝对必要的。如果每次更改后都要等待10分钟,则开发者无法工作。因此,只需要等待几秒钟即可在Magento中看到要导入的内容是至关重要的。

易用性:API应该是清晰的,开发者只能受限于他们对Magento自身知识的了解。没有初级开发人员应该需要考虑流文件、性能和内存使用。

可扩展性:应该非常容易扩展和定制导入

可维护性:该库应该有一个稳定的API(目前尚不稳定),这样我们就可以升级一年前构建的导入,而不用担心一切都会出错。

正确获取抽象

对于Magento 1的Ho_Import,我们创建了一个自定义DSL,将外部文件映射到与Magento兼容的格式。这行得通,但我们很快发现,我们还需要在导入器中实现大量的基本PHP功能。我们在Ho_Import兼容的包装器中实现了PHP功能...

另一种选择是直接使用Avs_FastSimpleImport,它除了“你可以填充这个数组”之外没有提供任何抽象。虽然这比“创建自己的csv文件”前进了一大步,但它没有提供任何工具来使构建导入更容易、更健壮和更快。

现在,为Magento 2编写新的导入库并从头开始,这是一个创建新抽象的好时机。假设需要构建导入的人至少了解Magento 2编程的基础知识,我们可以创建一个不依赖于“美好的抽象”,但提供快速启动导入的工具的导入。

  1. 创建一个单个类文件以创建一个功能齐全的导入。如果类太复杂,开发者可以决定自己拆分逻辑。
  2. 使用行修改器修改数据,并使其他开发人员能够轻松创建新的

新导入库的核心概念基于行修改器。

什么是行修改器?

行修改器可以更新项目、添加项目、删除项目、添加新值、重写值、验证行等。

示例使用 \Ho\Import\RowModifier\ItemMapper

$items = [ ... ]; //Array of all products

/** @var \Ho\Import\RowModifier\ItemMapper $itemMapper */
$itemMapper = $this->itemMapperFactory->create([
    'mapping' => [
        'store_view_code' => \Ho\Import\RowModifier\ItemMapper::FIELD_EMPTY,
        'sku' => function ($item) {
             return $item['ItemCode'];
         }
        'name' => function ($item) {
            return $item['NameField'] . $item['ColorCode'];
        }
    ]
]);
$itemMapper->setItems($items);
$itemMapper->process($items); //The items array is modified with new values.

所有行修改器都从 \Ho\Import\RowModifier\AbstractRowModifier 继承

一般假设

  • 编写导入的人是程序员或至少具备基本的编程知识。
  • Magento的导入器功能有限,肯定不能“Just Work™”,我们需要在其之上构建抽象,以便真正专注于导入,而不是导入带来的所有“杂物”。

技术假设

  • PHP的数组格式足够高效,可以在内存中存储所有需要导入的产品。例如,5万件产品需要更多的内存,但通常在配置强大的服务器上运行。

贡献者

在H&O,我们已经为许多客户创建了导入,我们扩展了Ho_Import,是Avs_FastSimpleImport的核心贡献者

将源文件映射到与Magento兼容的格式,但从未打算解决URL重写、创建可配置项等问题。所有这些功能

此库建立在Magento内部导入/导出模块之上

控制台命令

ho:import:run profileName

直接运行导入脚本(不建议在实时环境中使用,可能导致死锁)。

cron:schedule jobName

安排一个任务立即运行。

致谢

该模块由Paul Hachmang编写(twitter: @paales,邮箱: paul@reachdigital.nl)并专为Reach Digital构建。我们制作Magento Webshops(网站: https://www.reachdigital.nl/,邮箱: info@reachdigital.nl,twitter: @ho_nl)。