将最终价格添加到Magento的管理产品网格中?

时间:2012-10-04 17:48:04

标签: magento admin

如何将“最终价格”(包括所有目录规则和特殊价格)添加到Magento管理员的产品网格中?

更新10/12/2012 我正在使用带有大量自定义的v1.1.8,所以我刚刚对v.1.1.8进行了全新安装,并将addFinalPrice()添加到产品网格中的_prepareCollection(),但现在我得到的只是半空白管理产品管理员中的屏幕。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

最终价格取决于网站和客户群,您是否有业务要求说明需要显示哪些价格? 因为在一般情况下,产品网格中的数据取决于商店。

在简单的情况下,您可以将价格索引表添加到产品集合并显示其中的数据(在产品集合中已存在方法addPriceData)。 (您也可以实施客户组切换器,以确保您已涵盖所有可能的情况)

在下面的链接示例中,如何向产品网格添加新列 http://www.magentocommerce.com/boards/viewthread/68993

简单示例如何覆盖产品网格

第1步 覆盖模块的config.xml中的网格

<config>
...
    <global>
    ...
        <blocks>
        ...
            <adminhtml>
                <rewrite>
                    <catalog_product_grid>Test_Catalog_Block_Adminhtml_Catalog_Product_Grid</catalog_product_grid>
                </rewrite>
            </adminhtml>
        ...
        </blocks>
    ...
    </global>
...
</config>

第2步实施你的块

class Test_Catalog_Block_Adminhtml_Catalog_Product_Grid extends Mage_Adminhtml_Block_Catalog_Product_Grid
{
    /**
     * get customer group id
     *
     * @return int
     */
    protected function _getCustomerGroupId()
    {
        $customerGroupId = (int) $this->getRequest()->getParam('customer_group_id', 0);
        return $customerGroupId;
    }

    /**
     * prepare collection
     *
     * @return Test_Catalog_Block_Adminhtml_Catalog_Product_Grid
     */
    protected function _prepareCollection()
    {
        $store = $this->_getStore();
        $collection = Mage::getModel('catalog/product')->getCollection()
            ->addAttributeToSelect('sku')
            ->addAttributeToSelect('name')
            ->addAttributeToSelect('attribute_set_id')
            ->addAttributeToSelect('type_id');

        if (Mage::helper('catalog')->isModuleEnabled('Mage_CatalogInventory')) {
            $collection->joinField('qty',
                'cataloginventory/stock_item',
                'qty',
                'product_id=entity_id',
                '{{table}}.stock_id=1',
                'left');
        }
        if ($store->getId()) {
            $collection->addPriceData($this->_getCustomerGroupId(), $this->_getStore()->getWebsiteId());
            $adminStore = Mage_Core_Model_App::ADMIN_STORE_ID;
            $collection->addStoreFilter($store);
            $collection->joinAttribute(
                'name',
                'catalog_product/name',
                'entity_id',
                null,
                'inner',
                $adminStore
            );
            $collection->joinAttribute(
                'custom_name',
                'catalog_product/name',
                'entity_id',
                null,
                'inner',
                $store->getId()
            );
            $collection->joinAttribute(
                'status',
                'catalog_product/status',
                'entity_id',
                null,
                'inner',
                $store->getId()
            );
            $collection->joinAttribute(
                'visibility',
                'catalog_product/visibility',
                'entity_id',
                null,
                'inner',
                $store->getId()
            );
            $collection->joinAttribute(
                'price',
                'catalog_product/price',
                'entity_id',
                null,
                'left',
                $store->getId()
            );
        }
        else {
            $collection->addAttributeToSelect('price');
            $collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner');
            $collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner');
        }

        $this->setCollection($collection);

        Mage_Adminhtml_Block_Widget_Grid::_prepareCollection();
        $this->getCollection()->addWebsiteNamesToResult();
        return $this;
    }

    /**
     * Prepare columns
     *
     * @return Mage_Adminhtml_Block_Widget_Grid
     */
    protected function _prepareColumns()
    {
        $this->addColumnAfter('final_price',
            array(
                'header'=> Mage::helper('catalog')->__('Final Price'),
                'type'  => 'price',
                'currency_code' => $this->_getStore()->getBaseCurrency()->getCode(),
                'index' => 'final_price',
            ), 'price');
        return parent::_prepareColumns();
    }
}

现在,如果您选择商店,您将看到价格,“所有商店视图”此数据不可用

答案 1 :(得分:0)

$collection->addPriceData()

会很有帮助