Додавання шару шару навігації до користувацької сторінки


9

У Magento блок багатошарової навігації чудово працює на сторінці списку продуктів.

Як цей блок можна успішно скопіювати на користувацьку сторінку, де є спеціальний список продуктів?

Примітка. Просто додавання блоку до XML і виклик його getChildHtml('blockname')не робить цього.


2
Потрібно додати категорію за замовчуванням до багатошарового коду блоку навігації, оскільки багатошарова навігація будується з продуктів поточної категорії.
Сандер Мангел

+1 для довідки, що робити, якщо є кілька продуктів з декількох категорій (наприклад, товари для продажу)?
pzirkind

2
Я зробив би для цього спеціальну категорію. Можуть бути й інші способи, але це, безумовно, найпростіший і масштабований!
Сандер Мангел

1
Якщо ви дійсно хочете цього, вам доведеться створити власну категорію. Багатошарова навігація дійсно розраховує, що буде категорія, з якою працювати, вона не займе простий ProductCollection, не переосмисливши цілий ряд класів.
Рік Куйперс

Відповіді:


5

В основному те, що вам потрібно зробити, це зробити extend/overwriteз Mage_Catalog_Block_Product_List (List.php) і переписати getProductCollection()метод:

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

    return $this->_productCollection;
}

Коли це було зроблено, я перезаписав і Mage_Catalog_Model_Layerклас, і клас Mage_Catalog_Model_Categoryі ввів нову змінну:

protected $_customProductCollection;

Я перезаписав getProductCollection()обидва класи, і я додав це на початку методу:

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

У мене також є метод, який дозволяє мені встановити це "customProductCollection"всередині обох цих класів. Після встановлення, решта даних багатошарової навігації / категорії базується на цій колекції.

Ознайомтеся з початковим запитанням + відповідь тут .

Удачі ;)


Який цей метод встановити на замовлення продукту колекції і звідки ви його називаєте?
easymoden00b
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.