Magento:移动产品过滤器

时间:2011-10-30 20:42:54

标签: magento filter

默认情况下,可用的产品过滤器显示在左侧边栏中。但我想将它们显示在产品列表上方。

我只是尝试将以下代码从 /template/catalog/layer/view.phtml 复制到 /template/catalog/product/list.phtml :< / p>

<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 个答案:

答案 0 :(得分: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>

使用上述内容,您只需在自定义列表模板中调用<?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>