Magento - 将列添加到自定义模块中的表的END(不复制所有列)

时间:2012-07-13 19:14:57

标签: magento magento-1.5

我制作了一个简单的模块,可以选择在目录>中添加“编辑”操作列。管理类别> [目录产品标签] 。代码工作正常,但是,它将新列放在表的开头,我希望它在表的 end 处(美学)。

这是重写(Product.php):

class [Company]_[Namespace]_Block_Catalog_Category_Tab_Product extends Mage_Adminhtml_Block_Catalog_Category_Tab_Product 
{
protected function _prepareColumns() {
    $this->addColumn('action',
                array(
                    'header' => Mage::helper('catalog')->__('Action'),
                    'width' => '50px',
                    'type' => 'action',
                    'getter' => 'getId',
                    'actions' => array(
                        array(
                            'caption' => Mage::helper('catalog')->__('Edit'),
                            'url' => array(
                                'base'=>'*/catalog_product/edit',
                                'params'=>array('store'=>$this->getRequest()->getParam('store'))
                            ),
                            'field' => 'id'
                        )
                    ),
                    'filter' => false,
                    'sortable' => false,
                    'index' => 'stores',
            ));
    return parent::_prepareColumns();
}
}

如果我将return parent::_prepareColumns();移到新列上方,则新列根本不会显示。

所以我的问题是,如何在不将将所有列复制到文件中的情况下将此新列移动到表 END

2 个答案:

答案 0 :(得分:0)

protected function _prepareColumns()
{
    parent::_prepareColumns();
    $this->addColumn('action',
            array(
                'header' => Mage::helper('catalog')->__('Action'),
                'width' => '50px',
                'type' => 'action',
                'getter' => 'getId',
                'actions' => array(
                    array(
                        'caption' => Mage::helper('catalog')->__('Edit'),
                        'url' => array(
                            'base'=>'*/catalog_product/edit',
                            'params'=>array('store'=>$this->getRequest()->getParam('store'))
                        ),
                        'field' => 'id'
                    )
                ),
                'filter' => false,
                'sortable' => false,
                'index' => 'stores',
        ));
    return $this;
}

还有addColumnsOrder功能,但是在这里没有任何意义,因为你要在最后添加列。

答案 1 :(得分:0)

另一种方法是使用addColumnAfter。假设,现有网格中的最后一列名为xyz。现在,要将名​​为myNewColumn的新列添加到网格的末尾,即在列xyz之后:

protected function _prepareColumns(){
    $this->addColumnAfter('myNewColumn', array(
        'header' => Mage::helper('catalog')->__('My New Column'),
        'index'  => 'myNewColumn'
    ),'xyz');
    return parent::_prepareColumns();
}