展示想象力,你可以增加一种列入清单的工具。 我在这里为品牌做这项工作,这是按类别收集的。 你可以修改这一法典,以适合你们的收集工作。
class Mage_Catalog_Block_Product_Brandsnew extends Mage_Catalog_Block_Product_Abstract
{
protected $_productsCount = null;
const DEFAULT_PRODUCTS_COUNT = 5;
/**
* Initialize block s cache
*/
protected function _construct()
{
parent::_construct();
$this->addColumnCountLayoutDepend( empty , 6)
->addColumnCountLayoutDepend( one_column , 5)
->addColumnCountLayoutDepend( two_columns_left , 4)
->addColumnCountLayoutDepend( two_columns_right , 4)
->addColumnCountLayoutDepend( three_columns , 3);
$this->addData(array(
cache_lifetime => 86400,
cache_tags => array(Mage_Catalog_Model_Product::CACHE_TAG),
));
}
/**
* Get Key pieces for caching block content
*
* @return array
*/
public function getCacheKeyInfo()
{
return array(
CATALOG_PRODUCT_NEW ,
Mage::app()->getStore()->getId(),
Mage::getDesign()->getPackageName(),
Mage::getDesign()->getTheme( template ),
Mage::getSingleton( customer/session )->getCustomerGroupId(),
template => $this->getTemplate(),
$this->getProductsCount()
);
}
/**
* Prepare collection with new products and applied page limits.
*
* return Mage_Catalog_Block_Product_New
*/
protected function _beforeToHtml()
{
$toolbar = $this->getToolbarBlock();
//$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
$collection = Mage::getResourceModel( catalog/product_collection )
->addAttributeToSelect(Mage::getSingleton( catalog/config )->getProductAttributes())
->addMinimalPrice()
->addStoreFilter()
->addAttributeToFilter( manufacturer ,$this->getRequest()->manufacturer);
Mage::getSingleton( catalog/product_status )->addVisibleFilterToCollection($collection);
Mage::getSingleton( catalog/product_visibility )->addVisibleInSearchFilterToCollection($collection);
//$collection->addAttributeToFilter( special_price ,array( neq => ));
// use sortable parameters
if ($orders = $this->getAvailableOrders()) {
$toolbar->setAvailableOrders($orders);
}
if ($sort = $this->getSortBy()) {
$toolbar->setDefaultOrder($sort);
}
if (isset($_GET[ p ])) {
$toolbar->setLimit($toolbar->getLimit());
}
$this->setProductCollection($collection);
$toolbar->setCollection($collection);
$this->setChild( toolbar , $toolbar);
Mage::dispatchEvent( catalog_block_product_list_collection , array(
collection =>$collection,
));
$collection->load();
return parent::_beforeToHtml();
}
/**
* Set how much product should be displayed at once.
*
* @param $count
* @return Mage_Catalog_Block_Product_New
*/
public function setProductsCount($count)
{
$this->_productsCount = $count;
return $this;
}
/**
* Get how much products should be displayed at once.
*
* @return int
*/
public function getProductsCount()
{
if (null === $this->_productsCount) {
$this->_productsCount = self::DEFAULT_PRODUCTS_COUNT;
}
return $this->_productsCount;
}
/**
* Retrieve Toolbar block
*
* @return Mage_Catalog_Block_Product_List_Toolbar
*/
public function getToolbarBlock()
{
if ($blockName = $this->getToolbarBlockName()) {
if ($block = $this->getLayout()->getBlock($blockName)) {
return $block;
}
}
$block = $this->getLayout()->createBlock($this->_defaultToolbarBlock, microtime());
return $block;
}
public function setCollection($collection)
{
$this->_productCollection = $collection;
return $this;
}
}