2012-10-04 84 views
4

如何將「最終價格」(包括所有目錄規則和特殊價格考慮在內)添加到Magento管理員的產品網格中?將最終價格添加到Magento的管理產品網格中?

UPDATE 2012年10月12日 我使用v1.1.8進行了大量自定義設置,因此我只做了一次全新的v.1.1.8安裝,並將addFinalPrice()添加到產品網格中的_prepareCollection() ,但現在我所得到的只是管理產品管理中的一個半空白屏幕。有任何想法嗎?

+0

對於存放ID? –

+0

對於他們中的任何一個...取決於選擇哪一個。 –

+0

商店ID選擇如何,網格沒有商店切換器?依賴於客戶和/或前端狀態的價格規則如何? –

回答

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

我可以麻煩你的代碼示例爲addColumn()和集合修改的最終價格嗎?我所嘗試過的一切都失敗了。 –

+0

我已經修改回答 –

+0

我很抱歉,我沒有提及我使用的是Magento v1.1.8,所以addPriceData()還沒有被引入。 :( –

0
$collection->addPriceData() 

將有助於

相關問題