基于计算的产品在magento中排序

时间:2015-11-30 06:17:08

标签: magento admin magento-1.9

在Magneto的产品详情页面中,我希望打折产品会在列表的最后列出。

任何人都可以知道如何从管理员方面或通过实际操作来实现这一目标。

1 个答案:

答案 0 :(得分:0)

您可以在产品网格中 addColumn ,然后您可以按以下方式排序:

使用自定义模块(see here创建自定义模块)

在自定义模块的配置中:

<?xml version="1.0"?>
<config>
    <modules>
        <YOUR_MODULE>
            <version>1.0</version>
        </YOUR_MODULE>
    </modules>
    <global>
        <blocks>
            <adminhtml>
                <rewrite>
                    <catalog_product_grid>YOUR_MODULE_Adminhtml_Block_Catalog_Product_Grid</catalog_product_grid>
                </rewrite>
            </adminhtml>
        </blocks>
    </global>
</config>

现在位于 app / code / local / YOUR / MODULE / Adminhtml / Block / Catalog / Product / 。创建文件: Grid.php

<?php 
class YOUR_MODULE_Adminhtml_Block_Catalog_Product_Grid extends Mage_Adminhtml_Block_Catalog_Product_Grid
{
    protected function _prepareColumns()
    {
        $this->addColumn('discounted_price', array(
            'header' => Mage::helper('catalog')->__('Discount Price'),
            'align' => 'left',
            'index' => 'discounted_price',
            'type'  => 'price',
            'currency_code' => $store->getBaseCurrency()->getCode(),
            'width'     => '70',
            'renderer' => 'YOUR_MODULE_Block_Catalog_Product_Renderer_DiscountPrice' //This is important!
        )); 
        return parent::_prepareColumns();
    }
}

注意渲染器元素,这是我们计算折扣价的地方。现在位于 app / code / local / YOUR / MODULE / Adminhtml / Block / Catalog / Product / Renderer / 。创建文件: DiscountedPrice.php

<?php
class YOUR_MODULE_Block_Catalog_Product_Renderer_DiscountPrice extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
    public function render(Varien_Object $row) {
        $storeId = (int) Mage::app()->getRequest()->getParam('store', 0);
        $value =  $row->getData($this->getColumn()->getIndex()); // Original value should you need it
        $product = Mage::getModel('catalog/product')->setStoreId($storeId)->load($row["entity_id"]);
        $discounted_price =   Mage::getModel('catalogrule/rule')->calcProductPriceRule($product,$product->getPrice());
        return '<span>'.$discounted_price.'</span>'; 
    }
}
?>

您现在应该在Catalog&gt;中看到自定义列管理名为“折扣价”的产品,您现在可以对其进行排序!希望这会有所帮助。