默认情况下,可用的产品过滤器显示在左侧边栏中。但我想将它们显示在产品列表上方。
我只是尝试将以下代码从 /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>
但显然这种方式不起作用。我该怎么办?
提前谢谢!
答案 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>