Как отобразить несколько категорий с помощью блока Magento - PullRequest
1 голос
/ 24 ноября 2011

Моя домашняя страница Magento в настоящее время имеет этот фрагмент кода, который отображает все продукты просто отлично.

{{block type="catalog/product_list"  category_id="2" template="catalog/product/list.phtml"}}

Грубо говоря, мое дерево категорий выглядит примерно так:

id 2 (root cat)
-> id 3
-> id 4
-> id 5

Поскольку каждый продукт, который я добавляюявляется ребенком с идентификатором 2 - каждый продукт отображается на главной странице.Мне нужно решение, которое позволит мне исключить определенные идентификаторы (категории) из списка продуктов на главной странице.

Я попробовал этот фрагмент ниже безуспешно:

{{block type="catalog/product_list"  category_id="2,3,5" template="catalog/product/list.phtml"}}

1 Ответ

3 голосов
/ 24 ноября 2011

Ваш код {{block type="catalog/product_list" category_id="2,3,5" template="catalog/product/list.phtml"}} не будет работать, потому что блок Mage_Catalog_Block_Product_List загружает только одну категорию $category = Mage::getModel('catalog/category')->load($this->getCategoryId());.

Я вижу два решения для вашей проблемы, вы можете использовать блок более одного раза с другим идентификатором категории:

{{block type="catalog/product_list"  category_id="2" template="catalog/product/list.phtml"}}
{{block type="catalog/product_list"  category_id="3" template="catalog/product/list.phtml"}}
{{block type="catalog/product_list"  category_id="5" template="catalog/product/list.phtml"}}

Или перезаписать блок Mage_Catalog_Block_Product_List и изменить поведение этой части

        if ($this->getCategoryId()) {
            $category = Mage::getModel('catalog/category')->load($this->getCategoryId());
            if ($category->getId()) {
                $origCategory = $layer->getCurrentCategory();
                $layer->setCurrentCategory($category);
            }
        }
        $this->_productCollection = $layer->getProductCollection();

        $this->prepareSortableFieldsByCategory($layer->getCurrentCategory());

        if ($origCategory) {
            $layer->setCurrentCategory($origCategory);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...