3

我正在构建我的第一个自定义 Magento 主题。它进展缓慢,但它正在发生。我摆脱了最初在主页上保存迷你搜索表单的栏,而是想将搜索表单放在我的新标题中。

这是我的标题的代码header.phtml

<div id="header">
<a href="<?php echo $this->getUrl('') ?>" title="<?php echo $this->getLogoAlt() ?>" class="logo"><img src="<?php echo $this->getLogoSrc() ?>" alt="<?php echo $this->getLogoAlt() ?>" /></a>
    <div id="header-top">
    <?php echo $this->getChildHtml('topSearch') ?>
    <?php echo $this->getChildHtml('topLinks') ?>
    </div>
    <?php echo $this->getChildHtml('topMenu') ?>
</div>

但搜索表单未呈现。这是有问题的网站:

http://s1.mynewsitereview.com/

非常感谢!

4

2 回答 2

6

首先,您需要创建或更新您的 local.xml 文件,如果您没有 local.xml 文件,您可以在其中创建一个

app->frontend->[包名]->[主题名]->layout->local.xml

创建完成后,您可以将我在这篇文章中的内容准确地复制到该文件中,以开始使用它。

通过 LOCAL.XML 文件而不是通过 catalog.xml 进行所有更新!这将使以后的升级变得更加容易。此外,您将能够在一个文件中快速查看您对站点所做的所有更改。

下面的示例将它添加到根引用名称,该名称将在所有页面上可用,但在 template->page->1column.phtml 或 2column-left.phtml 3column.phtml 等中很容易调用。

<?xml version="1.0" encoding="UTF-8"?>
<layout>
    <default>
        <reference name="root">
            <block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml"/>
        </reference>
   </default>
</layout>

然后使用您当前使用的方式调用它。

<?php echo $this->getChildHtml(‘topSearch’) ?>

现在您可以像上面部分一样使用“参考名称”和“as”名称。例如,您可以使用下面的类似设置来引用页脚块以添加搜索功能。对于教育,“as”名称是 .phtml 文件中使用的名称。“名称”是在 xml 文件中引用块的方式。所以在上面的例子中。我将搜索字段添加到根内容区域,然后在我的 .phtml 文件中使用“topSearch”的“as”名称调用它

<?xml version="1.0" encoding="UTF-8"?>
<layout>
    <default>
        <reference name="footer">
            <block type="core/template" name="footer.search" as="footerSearch" template="catalogsearch/form.mini.phtml"/>
        </reference>
    </default>
</layout>

然后在footer.phtml中调用它

<?php echo $this->getChildHtml('footerSearch') ?>
于 2014-01-28T23:47:52.537 回答
4

我知道这个问题很老了,但我会发布我的答案,希望它可以帮助其他人解决同样的问题

就我而言,我的页脚需要另一个搜索表单,所以我打开了

app/desing/frontend/base/default/layout/catalogsearch.xml

并复制:

<reference name="header">
        <block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml"/>
    </reference>

to:默认标签内的 app/desing/frontend/my-theme/my-theme/layout/local.xml

<reference name="header">
        <block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml"/>
    </reference>
</default><!-- just to give a idea of the position of where you should paste this code -->

然后我将其更改为:

<reference name="footer">
        <block type="core/template" name="footer.search" as="footerSearch" template="catalogsearch/form.mini.phtml"/>
    </reference>
</default>

然后在我的页脚文件中,我调用了:

<?php echo $this->getChildHtml('footerSearch') ?>

基本上你必须告诉你的主题需要使用本地xml在哪里获取'footerSearch',然后你可以称之为php。

于 2013-10-20T00:59:19.000 回答