Hello and welcome to beautiful Jun Blog.

magento之定制产品特价页面

Tags:, , , .

一般情况下,我们都需要有个页面来专门显示所有特价商品的页面,下面介绍一种使用magento自带的“catalog/product/list.phtml”模板来显示特价商品的方法,也是目前最好的一个方法了:

第一步:建立Block文件/app/code/local/Mage/Catalog/Block/Product/Special.php ,具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Mage_Catalog_Block_Product_Special extends Mage_Catalog_Block_Product_List
{
/**
* Retrieve loaded category collection
*
* @return Mage_Eav_Model_Entity_Collection_Abstract
*/

protected function _getProductCollection()
{
$todayDate = date('m/d/y');
$tomorrow = mktime(0, 0, 0, date('m'), date('d')+1, date('y'));
$tomorrowDate = date('m/d/y', $tomorrow);

$collection = Mage::getResourceModel('catalogsearch/advanced_collection')
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
->addMinimalPrice()
->addStoreFilter();

Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($collection);

$collection->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate))
->addAttributeToFilter('special_to_date', array('or'=> array(
0 => array('date' => true, 'from' => $tomorrowDate),
1 => array('is' => new Zend_Db_Expr('null')))
), 'left');

return $collection;
}
}

2) 建立一个CMS的page页面,编辑如下Block代码到你的内容页面里:

1
{{block type="catalog/product_special" template="catalog/product/list.phtml"}}

或者更新你的layout来实现,我一般是用这个方法,因为我的content是用的富文本编辑器 ,一些代码的特殊字符没办法编辑进去,还需要暂时关闭FCKeditor,所以我通常喜欢下面这个方法:

1
 

3) 这样就OK了,是不是很简单。

参考资料:
http://www.magentocommerce.com/boards/viewthread/16098/P15/

Posted on 17 十月 '09 by admin, under magento.