Adicionando bloco de navegação em camadas à página personalizada

9

No Magento, o bloco Navegação em camadas funciona muito bem na página da lista de produtos.

Como esse bloco pode ser copiado com êxito para uma página personalizada, onde há uma lista personalizada de produtos?

Nota: Basta adicionar o bloco ao XML e chamá-lo getChildHtml('blockname')não funciona.

pzirkind
fonte
2
Você precisa adicionar uma categoria padrão ao código de bloco de navegação em layouts, pois a navegação em layouts é criada a partir dos produtos da categoria atual.
Sander Mangel
+1 para obter ajuda, e se houver vários produtos de várias categorias (por exemplo, produtos de ofertas)?
Pzirkind
2
Eu faria uma categoria especial para isso. Pode haver outras maneiras, mas essa é definitivamente a mais fácil e escalável!
Sander Mangel
11
Se você realmente quiser, precisará criar uma categoria personalizada. A navegação em camadas realmente espera que haja uma categoria para trabalhar, não será necessário um simples ProductCollection sem substituir muitas classes.
23413 Rick Kipers

Respostas:

5

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 ;)

Kenny
fonte
Como é esse método para definir a coleção de produtos personalizados e de onde você o chama?
Easyden00b