我想要做的就是移动一个搜索框。此搜索框当前显示在标题中,紧挨着徽标,并由以下代码生成:
<?php echo $this->getChildHtml('topSearch') ?>
/app/design/frontend/MYTHEME/default/template/page/html/header.phtml
中的
我希望此搜索框与导航链接一致,导航链接位于另一个目录中的top.phtml
。但是当我使用代码时
<?php echo $this->getChildHtml('topSearch') ?>
搜索框不会出现。我理解这是因为$this
的含义已经改变,但我不明白的是如何显示搜索框?我应该用{<1}}替换什么?
我尝试用$this
替换它,因为这是header.phtml中Mage_Page_Block_Html_Header
的定义,但无济于事。任何人都可以指出我正确的方向,或者在$this
的定义发生变化后提供关于我如何访问方法的解释?
答案 0 :(得分:2)
您需要进行布局更新并将block topSearch包含到包含top.phtml的块中。 查看app / design / frontend /.../ layouts / ... xml文件,查找如何声明topSearch,然后查找声明使用top.phtml模板的块的位置。然后移动topSearch块作为顶部块的子节点。我的意思是像这样添加layout xml update:
<default>
<reference name="catalog.topnav">
<block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml"/>
</reference>
</default>
另一种解决方案是在模板中尝试下一步:
echo $this->getLayout()->getBlock('top.search')->toHtml()
如果它不起作用,那么在布局topSearch块中找到并尝试在块名称而不是别名的代码中使用。
您可以在此处详细了解Magento视图级别:http://www.magentocommerce.com/wiki/4_-_themes_and_template_customization/0_-_theming_in_magento/designing-for-magento
祝你好运!