ambimax / magento-module-ambimax-arrayexport
此包的最新版本(dev-master)没有可用的许可证信息。
Magento模块,允许您将所有产品导出为数组,以便在导出过程中修改和排列,并保存为csv或其他格式
dev-master
2017-04-28 12:30 UTC
Requires
This package is not auto-updated.
Last update: 2024-09-23 06:14:16 UTC
README
Magento模块,允许您将所有产品导出为数组,以便在导出过程中修改和排列,并保存为csv或其他格式
安装
将src/*复制到您的根目录或使用composer.json
"require": {
"ambimax/magento-module-ambimax-arrayexport": "~1.0"
}
用法
1.) 创建一个包含所有逻辑的文件
在app/code/comminity/My/Module/Model/Export.php中创建一个Model文件
class My_Module_Model_Export {
/** @var Mage_ImportExport_Model_Export_Adapter_Csv */
protected $_writeAdapter;
/** @var bool */
protected $_headerColsSet = false;
/**
* Init to export all products
*
* @param Varien_Event_Observer $observer
*/
public function initExport()
{
$file = Mage::getBaseDir('var').DS.'export'.DS.'exportfile.csv';
$this->_writeAdapter = new Mage_ImportExport_Model_Export_Adapter_Csv($file);
$data = array(
"entity" => 'catalog_product',
"file_format" => 'csv',
"export_filter" => array(),
"skip_attr" => array(),
);
/** @var Ambimax_ArrayExport_Model_Export $export */
$export = Mage::getModel('ambimax_arrayexport/export');
$export->setData($data);
$export->export();
}
/**
* Writes every product to $_writeAdapter
*
* @param Varien_Event_Observer $observer
*/
public function writeRow(Varien_Event_Observer $observer)
{
// Set header cols
if( ! $this->_headerColsSet) {
$this->_writeAdapter->setHeaderCols($observer->getHeaderCols());
$this->_headerColsSet = true;
}
// $data contains store codes with product data
$data = $observer->getProductData();
$row = $data['default'];
// do something with all the data
// write to csv
$this->_writeAdapter->writeRow($row);
}
}
2.) 添加Observer.php
在app/code/community/My/Module/Model/Observer.php中创建一个Observer文件
此文件是必需的,因此我们始终使用Singleton,否则writeAdapter将不会被设置
class My_Module_Model_Observer {
/**
* Init to export all products
*
* @param Varien_Event_Observer $observer
*/
public function initCompleteProductExport(Varien_Event_Observer $observer)
{
Mage::getSingleton('my_module/export')->initExport();
}
/**
* Write row to file
*
* @param Varien_Event_Observer $observer
*/
public function writeRow(Varien_Event_Observer $observer)
{
Mage::getSingleton('my_module/export')->writeRow($observer);
}
}
3.) 添加行处理事件
此事件用于处理您的数据并将其发送到您的写入适配器
<events>
<ambimax_arrayexport_product_row>
<observers>
<start_export>
<class>my_module/observer</class>
<method>writeRow</method>
</start_export>
</observers>
</ambimax_arrayexport_product_row>
</events>
4.) 添加cronjob以触发事件
<crontab>
<jobs>
<my_module_product_export>
<schedule><cron_expr>0 0 * * *</cron_expr></schedule>
<run>
<model>my_module/observer::initExport</model>
</run>
</my_module_product_export>
</jobs>
</crontab>
提示
- 您可以使用n98-magrun 从命令行触发cronjob
- 您可以使用Aoe_Scheduler 在Magento中使用