管理製品コントローラーに新しいmassActionを実装する必要があります。開始するための良い方法は、製品コントローラーを調べて、他の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)),
));
次に、この新しいアクションを製品コントローラー(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エクスポートのコンテンツの作成が完了したら(おそらく他のフィールドを追加する必要があります)、コントローラークラスの_prepareDownloadResponseメソッドを呼び出す必要があります。これで、カスタムエクスポートが完了しました。
最後に、変更に満足したら、magentoのインストールが更新されないように、変更をローカルコードプールに移動することを忘れないでください:)