首页 文章

产品集合工具栏,带有magento自定义模块中的请求参数

提问于
浏览
0

enter image description here

enter image description here

我有一个名为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 回答

  • 0

    尝试扩展:

    class CollectionFilter extends \Magento\Catalog\Model\Layer\Category\CollectionFilter
    {
    
    public function filter(
        $collection,
        \Magento\Catalog\Model\Category $category
    ) {
    if(isset($_GET['your filter']))
    
    /* your magic here*/
    

相关问题