我有一个名为CARTRIDGE FINDER的过滤器 . 当我点击按钮,通过选择打印机系列下拉列表查找我的CARTRIDGE时,它会正确,精确地显示带有产品列表工具栏的产品集合 . 但是,当我按名称或价格或视图排序时,它显示没有与选择匹配的产品 . 这里我的自定义(制造商)模块的布局文件的代码如下:
<manufacturer_index_filter>
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
</reference>
<reference name="content">
<block type="manufacturer/custom" name="printer_filter" template="manufacturer/brand_filter_result.phtml"/>
</reference>
下面给出了模块(制造商)块文件Custom.php的代码:`class Bubmania_Manufacturer_Block_Custom extends Mage_Core_Block_Template {public function __construct(){parent :: __ construct(); $ printer = $ this-> getRequest() - > getParams (); $ make_a_printer_op_val = $ printer ['make_a_printer']; $ printer_series = $ printer ['printer_series']; $ printer_model_no = $ printer ['printer_model_no'];
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('*');
$collection->addAttributeToSort('created_at', 'desc');
$collection->addAttributeToFilter(array(
array('attribute'=>'manufacturer','eq'=>$make_a_printer_op_val),
array('attribute'=>'printerseries','eq'=>$printer_series),
array('attribute'=>'printermodelnumber','eq'=>$printer_model_no),
));
$collection->addAttributeToFilter('status', 1);$this->setCollection($collection); /* parent::__construct();
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('*')
->addFieldToFilter('visibility', array(
Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH,
Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG
)); //showing just products visible in catalog or both search and catalog
$this->setCollection($collection); */}
protected function _prepareLayout(){parent :: _ prepareLayout();
//$toolbar = $this->getToolbarBlock();
$toolbar = Mage::getBlockSingleton('catalog/product_list')->getToolbarBlock();
// called prepare sortable parameters
$collection = $this->getCollection();
// use sortable parameters
if ($orders = $this->getAvailableOrders()) {
$toolbar->setAvailableOrders($orders);
}
if ($sort = $this->getSortBy()) {
$toolbar->setDefaultOrder($sort);
}
if ($dir = $this->getDefaultDirection()) {
$toolbar->setDefaultDirection($dir);
}
$toolbar->setCollection($collection);
$this->setChild('toolbar', $toolbar);
$this->getCollection()->load();
return $this;
}public function getDefaultDirection(){
return 'asc';
}
public function getAvailableOrders(){//返回数组('created_time'=>'创建时间','update_time'=>'更新时间','collection_id'=>'ID','name'=>'名称'); return array('name'=>'Name','position'=>'Position','price'=>'Price'); public function getSortBy(){return'name'; public function getToolbarBlock(){$ block = $ this-> getLayout() - > createBlock('manufacturer / toolbar',microtime()); return $ block; public function getMode(){return $ this-> getChild('toolbar') - > getCurrentMode(); }
public function getToolbarHtml()
{
return $this->getChildHtml('toolbar');
}}`
但是当它只运行Mage :: getModel('catalog / product') - > getCollection()而不是params时,它会成功运行产品集合工具栏 . 我需要在这个工具栏中设置params . 这该怎么做 . 如果有人知道这一点,请尽快回复我 . 我google了很多 . 但是没有具体的结果 . 谢谢
1 回答
尝试扩展: