2022-10-25 10:45:38 - 米境通跨境電商
Magento默認(rèn)提供了一些排序選項,例如:產(chǎn)品位置,名字,價格。在這篇文章中你將學(xué)會讓產(chǎn)品按照銷量來排序。
要做到這些,我們需要重寫一些Magento的核心文件。重定義核心文件并不是一個好的嘗試,所以我們創(chuàng)建一個自己的模塊來完成同樣的功能并保證能升級。
我假設(shè)你知道如何建立你自己的模塊并創(chuàng)建對應(yīng)的文件(app/etc/modules/Alwayly_Catalog.xml),所以Magento能識別我們的模塊。
現(xiàn)在,我們有了自己的模塊并且已經(jīng)被Magento識別,讓我們創(chuàng)建自己的config.xml,路徑為Alwayly/Catalog/etc/config.xml:
0.1.0
Alwayly_Catalog_Block_Product_List_Toolbar
Alwayly_Catalog_Model_Config
Alwayly_Catalog_Model_Resource_Product_Collection
也許你會想到,我們將要重寫以下三個文件:
Mage_Catalog_Block_Product_List_Toolbar
Mage_Catalog_Model_Config
Mage_Catalog_Model_Resource_Product_Collection
我們的app/code/local/Alwayly_Catalog_Block_Product_List_Toolbar應(yīng)該這樣:
classAlwayly_Catalog_Block_Product_List_ToolbarextendsMage_Catalog_Block_Product_List_Toolbar
{
publicfunctionsetCollection($collection)
{
parent::setCollection($collection);
if($this->getCurrentOrder()){
if($this->getCurrentOrder()=='qty_ordered'){
$this->getCollection()->getSelect()
->joinLeft(
array('sfoi'=>$collection->getResource()->getTable('sales/order_item')),
'e.entity_id=sfoi.product_id',
array('qty_ordered'=>'SUM(sfoi.qty_ordered)')
)
->group('e.entity_id')
->order('qty_ordered'.$this->getCurrentDirection());
}else{
$this->getCollection()
->setOrder($this->getCurrentOrder(),$this->getCurrentDirection())->getSelect();
}
}
return$this;
}
}
我們繼承了Mage_Catalog_Block_Product_List_Toolbar中所有的功能和方法但我們自己重寫了setCollection()方法