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。这是我们的机会。
-
使用源XML创建示例数据端口
-
将其导出到sample.json
-
取消序列化$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'];
-
从任何来源添加新字段,例如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; }
-
序列化,保存到JSON,导入到您的数据端口。