#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>