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