Добавление многослойного навигационного блока на пользовательскую страницу
-
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"
внутри этих классов. Как только он будет установлен, остальные данные многослойная навигация/категория основан на этой коллекции.
Проверьте первоначальный вопрос+ответ здесь.
Удачи ;)