Ajout d'un bloc de navigation en couches à une page personnalisée

9

Dans Magento, le bloc de navigation en couches fonctionne bien dans la page de liste de produits.

Comment ce bloc peut-il être copié avec succès sur une page personnalisée, où il existe une liste personnalisée de produits?

Remarque: il suffit d'ajouter le bloc au XML et de l'appeler ne getChildHtml('blockname')fait pas l'affaire.

pzirkind
la source
2
Vous devez ajouter une catégorie par défaut au code de bloc de navigation en couches car la navigation en couches est construite à partir des produits de la catégorie actuelle.
Sander Mangel
+1 pour l'aide, que se passe-t-il s'il existe plusieurs produits de plusieurs catégories (par exemple, des produits en promotion)?
pzirkind
2
Je ferais une catégorie spéciale pour ça. Il pourrait y avoir d'autres façons, mais c'est certainement la plus simple et la plus évolutive!
Sander Mangel
1
Si vous le souhaitez vraiment, vous devrez créer une catégorie personnalisée. La navigation en couches s'attend vraiment à ce qu'il y ait une catégorie avec laquelle travailler, cela ne prendra pas une simple ProductCollection sans remplacer un tas de classes.
Rick Kuipers

Réponses:

5

Fondamentalement, ce que vous devez faire est extend/overwritede Mage_Catalog_Block_Product_List (List.php) et réécrire la getProductCollection()méthode:

protected function _getProductCollection()
{
    if (is_null($this->_productCollection)) {
        // Build collection and set it
        $collection = "...";
        $this->setProductCollection($collection);
    }

    return $this->_productCollection;
}

Lorsque cela a été fait, j'ai écrasé à la fois la Mage_Catalog_Model_Layerclasse et la Mage_Catalog_Model_Categoryet introduit une nouvelle variable:

protected $_customProductCollection;

J'ai écrasé le getProductCollection()dans les deux classes et je l'ai ajouté au début de la méthode:

if(isset($this->_customProductCollection)){
    return $this->_customProductCollection;
}

J'ai également une méthode qui me permet de définir cela "customProductCollection"dans ces deux classes. Une fois défini, le reste des données de la navigation / catégorie en couches est basé sur cette collection.

Découvrez la question initiale + réponse ici .

Bonne chance ;)

Kenny
la source
Quelle est cette méthode pour définir une collection de produits personnalisée et d'où l'appelez-vous?
easymoden00b