Basicamente o que você tem a fazer é extend/overwritepartir Mage_Catalog_Block_Product_List (List.php) e reescrever o getProductCollection()método:
protected function _getProductCollection()
{
if (is_null($this->_productCollection)) {
// Build collection and set it
$collection = "...";
$this->setProductCollection($collection);
}
return $this->_productCollection;
}
Quando isso foi feito, eu substituí a Mage_Catalog_Model_Layerclasse e a Mage_Catalog_Model_Categorye introduzi uma nova variável:
protected $_customProductCollection;
Substituí o getProductCollection()em ambas as classes e adicionei isso no início do método:
if(isset($this->_customProductCollection)){
return $this->_customProductCollection;
}
Eu também tenho um método que me permite definir isso "customProductCollection"dentro dessas duas classes. Depois de definido, o restante dos dados da categoria / navegação em camadas é baseado nessa coleção.
Confira a pergunta inicial + resposta aqui .
Boa sorte ;)