如何将XML的xPath字段导入到Pimcore DataDirector数据端口原始数据字段



Pimcore拥有用于导入自动化的powerfull插件DataDirector。它建议手动配置要导入的字段,并将其映射到Pimcore字段https://www.youtube.com/watch?v=nyhKJTzTq-4&list=PL4-QRNfdsdKIfzQIP-c9hRruXf0r48fjt

如果您有10-50个字段,它可以正常工作。如果你有700多个字段,如何从一些csv文件导入该配置?

无法使用命令行DataDirector API的接口进行导入。

我试着要求供应商创建这样的功能——这是有成本的。

我试图在MySQL中编辑它,但它与其他数据严格耦合,请参阅:SELECT sourceconfig FROMplugin_pim_dataport

解决方案:

每个数据端口都可以导出和导入到JSON。这是我们的机会。

  1. 使用源XML创建示例数据端口

  2. 将其导出到sample.json

  3. 取消序列化$json_a['plugin_pim_dataport']['sourceconfig']和$json_a['plugin _pim_rawitemField']容器

    $string = file_get_contents(
    "sample.json"
    );
    $json_a = json_decode($string, true);
    $sourceConfig = $json_a['plugin_pim_dataport']['sourceconfig'];
    $sourceConfig = unserialize($sourceConfig, ['allowed_classes' => false]);
    $fieldsConfig = $json_a['plugin_pim_rawitemField']; 
    
  4. 从任何来源添加新字段,例如CSV

    while (($data = fgetcsv($handle, 1000, ",")) !== false) {
    $row++;
    $id = $max + 1 + $row;
    $data = $this->addField($id, $data[0], $data[1]);
    $sourceConfig['fields']['field_' . ($id + 1)] = $data['sourceConfig'];
    $fieldsConfig[$id] = $data['fieldsConfig'];
    }
    public function addField(
    $id,
    $name = 'ObjectBrick/Field',
    $xpath = '//*[.//MainContainer = "systeme"]//*[.//Description = "SomeAttribute"]/anyPath/SampleContainer'
    ) {
    $res = [];
    $res['fieldsConfig'] = [
    "dataportId" => "1",
    "fieldNo"    => $id + 1,
    "name"       => $name,
    "priority"   => $id
    ];
    $res['sourceConfig'] = [
    'xpath'       => $xpath,
    'multiValues' => false,
    ];
    return $res;
    }
    
  5. 序列化,保存到JSON,导入到您的数据端口。

最新更新