Hinzufügen von Layered Navigation Block zur benutzerdefinierten Seite
-
16-10-2019 - |
Frage
In Magento funktioniert der geschichtete Navigationsblock gut auf der Produktlistenseite.
Wie kann dieser Block erfolgreich auf eine benutzerdefinierte Seite kopiert werden, auf der eine benutzerdefinierte Liste von Produkten vorhanden ist?
Hinweis: Fügen Sie den Block nur zum XML hinzu und rufen Sie ihn an getChildHtml('blockname')
tut nicht den Trick.
Lösung
Grundsätzlich müssen Sie tun, ist extend/overwrite
aus Mage_catalog_block_product_list (List.php)
und schreibe das um getProductCollection()
Methode:
protected function _getProductCollection()
{
if (is_null($this->_productCollection)) {
// Build collection and set it
$collection = "...";
$this->setProductCollection($collection);
}
return $this->_productCollection;
}
Als das geschah, hatte ich beide überschrieben Mage_Catalog_Model_Layer
Klasse und die Mage_Catalog_Model_Category
und führte eine neue Variable ein:
protected $_customProductCollection;
Ich habe das überschrieben getProductCollection()
In beiden Klassen fügte ich dies zu Beginn der Methode hinzu:
if(isset($this->_customProductCollection)){
return $this->_customProductCollection;
}
Ich habe auch eine Methode, mit der ich dies festlegen kann "customProductCollection"
In beiden Klassen. Sobald es festgelegt ist, der Rest der Daten der Daten Schichtnavigation/Kategorie basiert auf dieser Sammlung.
Schauen Sie sich die erste Frage+Antwort an hier.
Viel Glück ;)