Magento, пользовательский список продуктов

Я сделал свою собственную страницу списка продуктов на основе Mage_Catalog_Block_Product_List:

app/code/local/Mage/Catalog/Block/Product/Special.php:

class Mage_Catalog_Block_Product_Special extends Mage_Catalog_Block_Product_List
{      
    /* Original contents */

    /* Here I call addAttributeToFilter on product collection, and then... */
    return $this->_productCollection; 
}

Я включаю это на страницу CMS в центральном столбце:

<reference name="content">
    <block type="catalog/product_special" template="catalog/product/list.phtml" />
</reference>

Проблема в следующем: Список продуктов отображается нормально, но в левом столбце нет многоуровневой навигации.

Это довольно странно, так как я использую точно такой же шаблон, как и обычные листинги.

Несколько вещей, которые я проверил:

  • Mage_Catalog_Block_Product_Special просто является прокси-классом. Это не работает. Даже если я использую тип блока «каталог/список_продуктов» на своей странице CMS, я не получу многоуровневую навигацию.
  • Нет никаких расширений, которые переопределяют важные базовые классы.
  • Я также попытался создать свой собственный модуль и перечислить его, например, в разделе «mycatalog». Это приводит к точно такой же проблеме.

У меня есть ощущение, что это связано с попыткой включить список продуктов на страницу CMS, но я не смог отследить точную проблему.

Любая помощь в этом будет очень признательна.


person Daniel Sloof    schedule 03.03.2011    source источник
comment
У меня нет прямого ответа на ваш вопрос, но у меня есть комментарий и несколько вопросов: во-первых, вы никогда не должны писать функциональность, не создав для нее модуль. Создание файлов и вставка их в основные модули Magento всегда является плохой практикой. Не делай этого.   -  person Prattski    schedule 04.03.2011
comment
Вопросы. Отображается ли многоуровневая навигация при использовании шаблона обычного списка? Может быть, ваша категория или продукты настроены неправильно?   -  person Prattski    schedule 04.03.2011
comment
Пратски: Я знаю о вашем первом пункте, это было первое, что я попробовал. Чтобы исключить любую возможность, я попытался применить более прямой подход. Я не переопределяю какие-либо основные модули, поэтому риск должен быть минимальным.   -  person Daniel Sloof    schedule 04.03.2011
comment
Пратски: Что касается вашего второго вопроса; Даже с catalog/product_list и его стандартным (исходным) шаблоном он не будет работать на странице CMS.   -  person Daniel Sloof    schedule 04.03.2011
comment
какая версия магенто?   -  person Jonathan Day    schedule 08.03.2011


Ответы (4)


Вам нужно добавить блок, который визуализирует слои, в левый столбец.

Если вы посмотрите на catalog.xml, вы увидите, что узел catalog_category_layered включает в себя следующее:

<reference name="left">
        <block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml"/>
        ...
</reference>

Итак, добавьте это в обновление макета CMS xml, и это должно отобразить блок Layer на вашей странице CMS.

Если у вас есть проблемы с тем, что список продуктов не фильтруется, когда вы щелкаете один из фильтруемых атрибутов, это, вероятно, связано с тем, что ссылки, отображаемые блоком Layer_View, предполагают, что они собираются отправлять обратно в CategoryController, а не CmsController, который будет отображаться Ваша CMS-страница. Это может быть проблемой, а может и не быть, поэтому сообщите здесь, если это не сработает, и мы можем попытаться решить эту проблему.

person Jonathan Day    schedule 08.03.2011

Лично я бы создал скрытую категорию со всеми продуктами в ней и использовал бы скрипт для обновления всех продуктов. Скрипт можно сделать с помощью API, медленно да, но он будет работать своевременно для определенного уровня количества SKU.

person ʍǝɥʇɐɯ    schedule 04.03.2011
comment
Спасибо, но это не удовлетворительное решение моей проблемы. - person Daniel Sloof; 07.03.2011

навигация по слоям включена в представление категорий. Вы должны включить часть навигации, используемую по категориям, поэтому попробуйте вставить

        <reference name="left">
        <block type="catalog/navigation" name="catalog.leftnav" after="currency" template="catalog/navigation/left.phtml"/>
    </reference>

до

<reference name="content">

Я не уверен, но если это не работает, это все равно должно помочь вам понять проблему.

person Antonino Bonumore    schedule 07.03.2011

проверьте следующие страницы (они столкнулись с той же проблемой)

http://www.exploremagento.com/magento/some-custom-blocks-to-help-you-show-products.php http://www.chilipepperdesign.com/2009/03/23/magento-how-to-list-all- продукты-в-одной-категории-в-блоке-боковой панели

person Oğuz Çelikdemir    schedule 10.03.2011