aa/akeneo-data-loader

此包最新版本(dev-master)没有可用的许可信息。

Akeneo PIM 数据加载器

dev-master 2021-08-09 11:33 UTC

README

Build Status

Akeneo 数据加载器可以帮助您通过其 REST API 将数据加载到 Akeneo PIM。

使用场景

  • 加载 YAML 固定数据用于测试、本地开发或性能基准测试。
  • 从外部系统(旧版 PIM 或常规数据提供商)导入产品数据。

功能

  • 支持批量数据上传(upsert 模式)。
  • 简化媒体文件的导入。

示例

从数组加载

use Aa\AkeneoDataLoader\Api;
use Aa\AkeneoDataLoader\LoaderFactory;

$factory = new LoaderFactory();

$apiCredentials = Api\Credentials::create('https://your.akeneo.host/', 'clientId', 'secret', 'username', 'password');

$loader = $factory->createByCredentials($apiCredentials);

$loader->load('product', [
    [
        'identifier' => 'test-product',
        'enabled'    => true,
        'family'     => 'accessories',
        'categories' => [
            'master_accessories',
            'print_accessories',
            'suppliers',
        ],
        'values' => [
            'ean'    => [[ 'locale' =>  null, 'scope' =>  null, 'data' => '1234567890183' ]],
            'name'   => [[ 'locale' =>  null, 'scope' =>  null, 'data' => 'Test product' ]],
            'image'  => [[ 'locale' =>  null, 'scope' =>  null, 'data' => '@file:asset/1111111171.jpg' ]],
            'weight' => [[ 'locale' =>  null, 'scope' =>  null, 'data' => [ 'amount' =>  '500.0000', 'unit' => 'GRAM' ] ]],
        ],
    ],
]);

从 YAML 文件加载

use Aa\AkeneoDataLoader\Api;
use Aa\AkeneoDataLoader\LoaderFactory;
use Symfony\Component\Yaml\Yaml;

$factory = new LoaderFactory();
$apiCredentials = Api\Credentials::create('https://your.akeneo.host/', 'clientId', 'secret', 'username', 'password');
$loader = $factory->createByCredentials($apiCredentials);

$productData = Yaml::parse(file_get_contents('data/product.yaml'));

$loader->load('product', $productData);

如何使用数据加载器加载数据

如您所见,加载数据需要了解

  1. Akeneo 主机地址和 API 凭据
  2. 数据类型
  3. 数据格式

1. Akeneo 主机地址和 API 凭据

我希望您知道您的 Akeneo 主机,因此通过创建一个 Credentials 对象来使用它。

此外,您需要知道您将要用于通过 API 连接的用户的名字和密码。

最后但同样重要的是,您需要 API 连接的客户端 ID 和密钥。
您可以在 Akeneo 的 系统 > API 连接 部分中创建一个连接,或使用控制台命令来生成它

bin/console pim:oauth-server:create-client Import

2. 数据类型

数据加载器支持以下数据类型

  • 渠道
  • 类别
  • 属性组
  • 属性
  • 属性选项
  • 家族
  • 家族变体
  • 产品模型
  • 产品

以及以下企业版数据类型

  • 资产
  • 资产变体文件
  • 资产引用文件
  • 参考实体
  • 参考实体记录

3. 数据格式

数据格式是 Akeneo REST API 的格式。

还可以查看代表数据格式的YAML 文件示例

如何加载媒体文件

您可以简单地上传一个文件,并将其指定为图像或文件属性的值。

$loader->load('product', [
    'values' => [
        'image'  => [
            [ 
                'locale' => 'en_US', 
                'scope'  => 'ecommerce', 
                'data'   => '@file:relative/path/to/your/asset.jpg' 
            ],
        ],
    ],
]);

前缀 @file: 告诉 Akeneo 数据加载器读取此媒体文件 relative/path/to/your/asset.jpg 并将其指定为 image 属性的值。

您可以使用 LoaderFactory 的配置指定媒体文件的基本目录路径

use Aa\AkeneoDataLoader\LoaderFactory;
use Aa\AkeneoDataLoader\Connector\Configuration;

$configuration = Configurationcreate('assets/baseDir/path');
$factory = new LoaderFactory($configuration);

如何查询和修改数据

您可以使用数据加载器修改使用 Akeneo API 获取的数据。

use Aa\AkeneoDataLoader\Api;
use Aa\AkeneoDataLoader\LoaderFactory;
use Akeneo\Pim\ApiClient\AkeneoPimClientBuilder;
use Akeneo\Pim\ApiClient\Search\SearchBuilder;

// Fetch data using Akeneo UPI

$clientBuilder = new AkeneoPimClientBuilder('https://your.akeneo.host/');
$client = $clientBuilder->buildAuthenticatedByPassword('clientId', 'secret', 'admin', 'admin');

$searchBuilder = new SearchBuilder();
$searchBuilder->addFilter('price', 'EMPTY');
$searchFilters = $searchBuilder->getFilters();

$products = $client->getProductApi()->all(100, ['search' => $searchFilters]);

// Send modified data back

$factory = new LoaderFactory();

$apiCredentials = Api\Credentials::create(
    'https://your.akeneo.host/',
    'clientId', 'secret', 'admin', 'admin');

$loader = $factory->createByCredentials($apiCredentials);

foreach ($products as $product) {
    $product['enabled'] = false;
    $loader->load('product', [$product]);
}