Magento, пользовательский список продуктов - PullRequest
5 голосов
/ 03 марта 2011

Я создал свою собственную страницу со списком продуктов на основе 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, просто являющийся прокси-классом.Это не работаетДаже если я буду использовать тип блока «catalog / product_list» на своей странице CMS, я не получу многоуровневую навигацию.
  • Нет расширений, которые бы перекрывали ключевые классы.
  • Я также пробовалсоздать свой собственный модуль и перечислить его, например, под «mycatalog».Это приводит к точно такой же проблеме.

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

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

Ответы [ 4 ]

4 голосов
/ 08 марта 2011

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

Если вы посмотрите на 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, и на вашей странице CMS должен отобразиться блок Layer.

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

0 голосов
/ 10 марта 2011
0 голосов
/ 07 марта 2011

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

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

до

<reference name="content">

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

0 голосов
/ 05 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...