Magento: переместить фильтры продуктов

#magento #filter

#magento #Фильтр

Вопрос:

По умолчанию доступные фильтры продуктов отображаются на левой боковой панели. Но вместо этого я хотел бы отобразить их над списком продуктов.

Я просто попытался скопировать следующий код из /template/catalog/layer/view.phtml в /template/catalog/product/list.phtml:

 <p class="block-subtitle"><?php echo $this->__('Shopping Options') ?></p>
<dl id="narrow-by-list">
    <?php $_filters = $this->getFilters() ?>
    <?php foreach ($_filters as $_filter): ?>
        <?php if($_filter->getItemsCount()): ?>
            <dt><?php echo $this->__($_filter->getName()) ?></dt>
            <dd><?php echo $_filter->getHtml() ?></dd>
        <?php endif; ?>
    <?php endforeach; ?>
</dl>
 

Но, видимо, это так не работает. Как мне поступить?

Заранее благодарю вас!

Комментарии:

1. Вот руководство для дизайнеров: magentocommerce.com/wiki/4_-themes_and_template_customization/0-_theming_in_magento/designing-for-magento


Ответ №1:

Вам нужно сделать блок (класс php), который использует шаблон filters, дочерним элементом класса, в который вы хотите включить эти фильтры. Это делается в формате XML.

В local.xml файл в папке макета вашей темы, выполните следующие действия:

 <?xml version="1.0" ?>
<layout>
    <catalog_category_layered>
        <!-- remove from left block -->
        <reference name="left">
            <action method="unsetChild">
                <child>catalog.leftnav</child>
            </action>
        </reference>

        <!-- add as child to product list block -->
        <reference name="product_list">
            <action method="insert">
                <child>catalog.leftnav</child>
            </action>
        </reference>
    </catalog_category_layered>
</layout>
 

используя вышесказанное, вы можете просто вызвать <?php echo $this->getChildHtml('catalog.leftnav') ?> свой пользовательский шаблон списка, чтобы он отображался. Вы можете либо оформить его с помощью CSS, либо изменить его шаблон, добавив это в узел catalog_category_layered выше:

         <reference name="catalog.leftnav">
            <action method="setTemplate">
                <child>path/to/template.phtml</child>
            </action>
        </reference>