magento - 将产品从管理产品网格导出到 csv

标签 magento grid dataflow

导入产品配置文件允许您按名称、sku 过滤要导出的产品...
我想在管理产品页面中具有相同的功能。
管理员将在网格中过滤产品,然后单击“导出”按钮以获取过滤后的产品。

如何添加“导出”按钮?我需要覆盖什么模板/块?
当管理员单击按钮时,如何获取过滤后的集合?
如何将过滤后的集合导出到 csv 文件?我可以为此使用数据流吗?

谢谢

最佳答案

您将需要实现新的 massAction 在管理产品 Controller 中。一个好的开始方法是查看产品 Controller 并了解其他 massActions 是如何实现的。

让我们来看看... 首先,您需要向网格添加一个 massAction 声明。这可以在 app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php 中完成。您需要在 _prepareMassaction 方法中添加以下内容:

$this->getMassactionBlock()->addItem('export', array(
                'label' => Mage::helper('catalog')->__('Export to CSV'),
                'url'   => $this->getUrl('*/*/massExport', array('_current'=>true)),
            ));

现在您必须在产品 Controller (app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php) 中实现这个新操作:
public function massExportAction()
    {
        $productIds = $this->getRequest()->getParam('product');
        if (!is_array($productIds)) {
            $this->_getSession()->addError($this->__('Please select product(s).'));
            $this->_redirect('*/*/index');
        }
        else {
            //write headers to the csv file
            $content = "id,name,url,sku\n";
            try {
                foreach ($productIds as $productId) {
                    $product = Mage::getSingleton('catalog/product')->load($productId);
                    $content .= "\"{$product->getId()}\",\"{$product->getName()}\",\"{$product->getProductUrl()}\",\"{$product->getSku()}\"\n";
                }
            } catch (Exception $e) {
                $this->_getSession()->addError($e->getMessage());
                $this->_redirect('*/*/index');
            }
            $this->_prepareDownloadResponse('export.csv', $content, 'text/csv');
        }

    }

代码主要是从 massDeleteAction 复制的,但您应该添加到 $content 变量而不是删除产品。创建完 csv 导出的内容后(您可能需要向其中添加其他字段),您需要调用 Controller 类的 _prepareDownloadResponse 方法。就是这样,您的自定义导出就位!

最后要注意的是,一旦您对更改感到满意,请记住 将它们移至您的本地代码池 以便您的 magento 安装保持更新:)

关于magento - 将产品从管理产品网格导出到 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3468961/

相关文章:

extjs - 从 ExtJS 4 中的商店重新加载数据

java - 数据流SDK 2.x : PubSubIO authorization error

node.js - 如何授权 HTTP POST 请求以使用 REST API 执行数据流模板

python-3.x - 如何在 Python 中将表行 PCollections 转换为键、值 PCollections?

php - Magento - 在购物车页面上使用自定义模块添加自定义 block

javascript - Magento 2,链接无效,图像未加载

mysql - Magento 中的 SQL 查询集合

java - 搜索点网格,每个点只访问一次

php - 如何在 Magento 小部件配置中允许选择多个产品?

combobox - Extjs4 网格编辑器远程组合框 displayValue