Пользовательская коллекция продуктов не фильтруется Многоуровневой навигацией


Я переопределил продукт List.php Класс & вот код

protected function _getProductCollection()
{   
 if (is_null($this->_productCollection)) {

$result = array_unique($productIds);        

$collection = Mage::getResourceModel('catalog/product_collection');
$attributes = Mage::getSingleton('catalog/config')->getProductAttributes();
$collection->addAttributeToSelect($attributes);
$collection->addIdFilter($result);
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);

$this->_productCollection = $collection;
}

return $this->_productCollection;
}

Работая нормально, я также добавил многоуровневую навигацию, как упоминалось здесь, и многоуровневая навигация появилась, как и ожидалось.

Единственная проблема заключается в том, что когда я нажимаю на любой фильтр в многоуровневой навигации, навигация обновляется, и фильтр также добавляется в URL, но список продуктов не будет отфильтрован выбранным фильтром. Пожалуйста, объясните мне, как я могу применить фильтры к коллекции продуктов

Author: Keyul Shah, 2014-09-26

2 answers

Для многоуровневой навигации вам необходимо:

Расширить

App/code/core/Mage/CatalogSearch/Model/Layer.php

В ваш пользовательский модуль.

И функция сбора данных для подготовки к поездке:

public function prepareProductCollection($collection){
    if(Mage::helper('catalogsearch')->getQuery()->getQueryText())
        return parent::prepareProductCollection($collection);
    else{
        $collection
            ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes());
            $collection->setStore(Mage::app()->getStore())
            ->addMinimalPrice()
            ->addFinalPrice()
            ->addTaxPercents()
            ->addStoreFilter()
            ->addUrlRewrite();

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

    return $this;
}

Проверьте эту ссылку URL-адрес

 5
Author: TBI Infotech, 2019-08-02 07:23:13

Вы используете неправильный метод

protected function _getProductCollection()
{   
  if (is_null($this->_productCollection)) {
    $result = array_unique($productIds);        
    $collection = Mage::getResourceModel('catalog/product_collection');
    $attributes = Mage::getSingleton('catalog/config')->getProductAttributes();
    $collection->addAttributeToSelect($attributes);
    $collection->addAttributeToFilter('entity_id', array('in' => $result));
    Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
    $this->_productCollection = $collection;
    }
    return $this->_productCollection;
}

Так что попробуйте приведенный выше код, дайте мне знать, если появятся какие-либо комментарии.

 0
Author: Keyul Shah, 2014-09-26 04:39:49