是否可以在3columns.phtml中添加搜索框(如我的类别。)
因此,例如,我想在左侧的产品页面上显示:
所以在 3columns.phtml 我有这一行,左边的 div。
<div class="col-left sidebar"><?php echo $this->getChildHtml('left') ?></div>
那么 *什么样的代码以及我应该在哪里包含才能使搜索框出现在左侧?*
有什么建议吗?
这对于设计布局文件夹中的文件 local.xml 很有用。如果您还没有创建一个,它会:
/app/design/frontend/your_package/your_theme/layout/local.xml
本地.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
<reference name="left">
<block type="core/template" name="searchbox" template="path/to/searchbox.phtml" after="sibling.blockName"/>
</reference>
</default>
</layout>
刷新您的缓存,这应该适用于所有设置为左列的页面。
解释
这是 Magento 内置的少数几种加载布局块的方法之一。所有布局文件都需要前几个标签,<default>
标记更新句柄以应用于所有页面。<reference name="left">
表示我们正在更改左侧栏,“left”是其块名称。现在让我们看看下面的块:
type="core/template"
- 这种类型表示要使用的类,app/code/core/Mage/*
通常绑定到,但可以通过将类文件复制到app/code/local/Mage/*
目录来覆盖,以及表示扩展类,如app/code/community/another_extension
.
name="searchbox"
- 这是它将在布局中引用的名称。你可以给它其他东西,但要确保它不与现有的块名称冲突。
template="path/to/searchbox"
- 这是您输入要加载的模板文件的路径的地方。
after="sibling.blockName"
- 这标志着在布局顺序中放置它的位置。只有当父块(在这种情况下,引用的“左”块)基本上设置为<?php echo $this->getChildHtml(''); ?>
. 没有参数('')
意味着它将按照 xml 定义的顺序加载所有子块。
在 的情况下<?php echo $this->getChildHtml('left') ?>
,它正在调用具有name="left"
. as="search.box.alias"
给它一个名字后,你也可以通过在<block />
标签中使用给它另一个别名,search.box.alias
也可以是你想要的任何东西,只要它不会引起任何冲突。