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


9

В Magento блок Layered Navigation прекрасно работает на странице со списком продуктов.

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

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


2
Вам необходимо добавить категорию по умолчанию в код блока многоуровневой навигации, так как многоуровневая навигация строится из продуктов текущей категории.
— Сандер Мангель

+1 за помощь, что, если есть несколько продуктов из нескольких категорий (например, продукты сделки)?
— pzirkind

2
Я бы сделал специальную категорию для этого. Могут быть и другие способы, но это определенно самый простой и масштабируемый!
— Sander Mangel

1
Если вы действительно хотите, то вам придется создать собственную категорию. Многоуровневая навигация действительно предполагает наличие категории для работы, она не потребует простой ProductCollection без переопределения целого ряда классов.
— Рик Кейперс

Ответы:


5

В основном, что вы должны сделать, это 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"внутри обоих этих классов. Как только он установлен, остальные данные многоуровневой навигации / категории основаны на этой коллекции.

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

Удачи ;)


Что это за метод для установки коллекции customproductcollection и откуда вы ее вызываете?
— easymoden00b
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.