Magento:移动产品过滤器

Iva*_*var 1 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>
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用.我应该怎么做?

先感谢您!

ben*_*rks 5

您需要创建块(一个php类),它使用过滤器模板作为您希望包含这些过滤器的类的子项.这是在布局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>
Run Code Online (Sandbox Code Playgroud)

使用上面的内容,您只需<?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>
Run Code Online (Sandbox Code Playgroud)