Добавление многослойного навигационного блока на пользовательскую страницу

magento.stackexchange https://magento.stackexchange.com/questions/13

  •  16-10-2019
  •  | 
  •  

Вопрос

В Magento слоистый навигационный блок прекрасно работает на странице списка продуктов.

Как этот блок может быть успешно скопирован на пользовательскую страницу, где есть пользовательский список продуктов?

Примечание: просто добавление блока в XML и называя его getChildHtml('blockname') не делает.

Это было полезно?

Решение

В основном то, что вам нужно сделать extend/overwrite из Mage_catalog_block_product_list (List.php) и переписать getProductCollection() Метод:

protected function _getProductCollection()
{
    if (is_null($this->_productCollection)) {
        // Build collection and set it
        $collection = "...";
        $this->setProductCollection($collection);
    }

    return $this->_productCollection;
}

Когда это было сделано, я перезаписал оба Mage_Catalog_Model_Layer класс и Mage_Catalog_Model_Category и представил новую переменную:

protected $_customProductCollection;

Я перезаписал getProductCollection() В обоих классах, и я добавил это в начале метода:

if(isset($this->_customProductCollection)){
    return $this->_customProductCollection;
}

У меня также есть метод, который позволяет мне установить это "customProductCollection" внутри этих классов. Как только он будет установлен, остальные данные многослойная навигация/категория основан на этой коллекции.

Проверьте первоначальный вопрос+ответ здесь.

Удачи ;)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top