jorisros / feed-builder-bundle
此捆绑包基于输出通道捆绑包,可以通过发布对象或通过命令行触发。
v1.3.5
2019-10-09 13:01 UTC
Requires
This package is auto-updated.
Last update: 2024-09-10 00:06:50 UTC
README
Feedbuilder捆绑包是导出捆绑包,有助于将pimcore的数据导出到其他系统中。
安装
可以通过composer进行安装。
- 运行
composer require jorisros/feed-builder-bundle
以接收捆绑包 - 启用捆绑包
bin/console pimcore:bundle:enable FeedBuilderBundle
然后运行./bin/console pimcore:bundle:enable OutputDataConfigToolkitBundle
因为您需要同时启用这两个捆绑包。 - 然后重新加载Pimcore的GUI,在以下位置会出现一个新的菜单项:设置->设置feedbuilder,该界面将配置文件保存在以下位置
var/config/feedbuilder.php
它是如何工作的?
工作方式相当简单,您描述您想要的数据导出方法,这样您就可以得到您想要的数据。这是基于输出通道捆绑包。
事件
我们可以轻松扩展feedbuilder以适应您的情况。以下事件处理器在构建器内部,您可以订阅不同级别的构建过程中的事件。
忽略您的feed中的缓存
在开发或测试过程中,您可以忽略feed中的缓存。您可以在composer的run
方法中提供一个额外的布尔参数,这样它会在运行查询代码之前清除缓存。在浏览器中,您可以在feed的URL中添加以下GET参数:...name-of-json.json?ignoreCache=true
然后,在运行feedbuilder之前,缓存将被清除。
导出到JSON的示例
创建一个类和一个方法,其中包含写入器。
<?php namespace FeedBuilderBundle\EventListener; use FeedBuilderBundle\Event\FeedBuilderEvent; class ExportExample { const FEED_TITLE = 'Testfeed'; public function fileHandler(FeedBuilderEvent $event){ if($event->getConfig()->get('title') === self::FEED_TITLE) { $arr['products'] = $event->getResult(); $dir = PIMCORE_SYSTEM_TEMP_DIRECTORY.DIRECTORY_SEPARATOR.'export'; $name = 'json_export_'.time().'.json'; if(!file_exists($dir)){ mkdir($dir); } file_put_contents($dir.DIRECTORY_SEPARATOR.$name,json_encode($arr, JSON_PRETTY_PRINT)); } } }
现在我们有一个将json内容写入文件的写入器。现在,在导出运行之后,我们必须连接监听器。我们将在service.yml
中这样做。
FeedBuilderBundle\EventListener\ExportExample: tags: - { name: kernel.event_listener, event: feedbuilder.after.run, method: fileHandler }