Пользовательская коллекция продуктов не фильтруется Многоуровневой навигацией
Я переопределил продукт 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, но список продуктов не будет отфильтрован выбранным фильтром. Пожалуйста, объясните мне, как я могу применить фильтры к коллекции продуктов
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-адрес
Вы используете неправильный метод
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;
}
Так что попробуйте приведенный выше код, дайте мне знать, если появятся какие-либо комментарии.