Dodanie warstwowego bloku nawigacji do strony niestandardowej


9

W Magento blok nawigacji warstwowej działa dobrze na stronie listy produktów.

Jak można pomyślnie skopiować ten blok na niestandardową stronę, na której znajduje się niestandardowa lista produktów?

Uwaga: Dodanie bloku do kodu XML i wywołanie go getChildHtml('blockname')nie rozwiązuje problemu .


2
Musisz dodać domyślną kategorię do kodu blokowego nawigacji warstwowej, ponieważ nawigacja warstwowa jest budowana z produktów bieżącej kategorii.
— Sander Mangel

+1 za pomoc, co zrobić, jeśli istnieje wiele produktów z wielu kategorii (na przykład produkty z ofertą)?
— pzirkind

2
Zrobiłbym dla tego specjalną kategorię. Mogą istnieć inne sposoby, ale jest to zdecydowanie najłatwiejszy i najbardziej skalowalny!
— Sander Mangel

1
Jeśli naprawdę tego chcesz, musisz utworzyć niestandardową kategorię. Nawigacja warstwowa naprawdę oczekuje, że będzie istniała kategoria do pracy, nie zajmie to prostego ProductCollection bez przesłonięcia całej masy klas.
— Rick Kuipers

Odpowiedzi:


5

Zasadniczo musisz zrobić extend/overwritez Mage_Catalog_Block_Product_List (List.php) i przepisać getProductCollection()metodę:

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

    return $this->_productCollection;
}

Kiedy to zrobiono, nadpisałem Mage_Catalog_Model_Layerklasę i klasę Mage_Catalog_Model_Categoryi wprowadziłem nową zmienną:

protected $_customProductCollection;

Nadpisałem getProductCollection()w obu klasach i dodałem to na początku metody:

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

Mam również metodę, która pozwala mi ustawić to "customProductCollection"w obu tych klasach. Po ustawieniu pozostałe dane warstwowej nawigacji / kategorii są oparte na tej kolekcji.

Sprawdź pierwsze pytanie + odpowiedź tutaj .

Powodzenia ;)


Jaka jest ta metoda, aby ustawić customproductcollection i skąd go wywołujesz?
— easymoden00b
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.