默认情况下,可用的产品过滤器显示在左侧边栏中.但我想将它们显示在产品列表上方.
我只是尝试将以下代码从/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)
但显然这不起作用.我应该怎么做?
先感谢您!
您需要创建块(一个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)