如何在 page.xml 中加载 topSearch?
问题:如何在 page.xml 中加载 topSearch?
我是 Magento CE 的新手,我正在尝试学习设计一个新主题。我已经开始研究默认的设计包。有一件事我无法理解:
这是 page.xml 中的标题部分:
<block type="page/html_header" name="header" as="header">
<block type="page/template_links" name="top.links" as="topLinks"/>
<block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
<block type="core/text_list" name="top.menu" as="topMenu" translate="label">
<label>Navigation Bar</label>
<block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml"/>
</block>
<block type="page/html_wrapper" name="top.container" as="topContainer" translate="label">
<label>Page Header</label>
<action method="setElementClass"><value>top-container</value></action>
</block>
</block>
这是header.phtml:
<div class="header-container">
<div class="header">
<?php if ($this->getIsHomePage()):?>
<h1 class="logo"><strong><?php echo $this->getLogoAlt() ?></strong><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></h1>
<?php else:?>
<a href="<?php echo $this->getUrl('') ?>" title="<?php echo $this->getLogoAlt() ?>" class="logo"><strong><?php echo $this->getLogoAlt() ?></strong><img src="<?php echo $this->getLogoSrc() ?>" alt="<?php echo $this->getLogoAlt() ?>" /></a>
<?php endif?>
<div class="quick-access">
<?php echo $this->getChildHtml('topSearch') ?>
<p class="welcome-msg"><?php echo $this->getWelcome() ?> <?php echo $this->getAdditionalHtml() ?></p>
<?php echo $this->getChildHtml('topLinks') ?>
<?php echo $this->getChildHtml('store_language') ?>
</div>
<?php echo $this->getChildHtml('topContainer'); ?>
</div>
</div>
<?php echo $this->getChildHtml('topMenu') ?>
我无法理解为什么要加载 topSearch 块,即使它没有在 page.xml 的标头中声明为标头的子项。
谁能解释一下?谢谢!
解答
在主题的 layout/catalogsearch.xml 中,您将看到这个:
<reference name="header">
<block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml"/>
</reference>
Catalogsearch 是 Magento 核心中的一个自己的模块。当深入研究 magento 并开发自己的模块/覆盖核心模块时,您会注意到这是向布局添加“依赖”事物的正常方式。当您禁用目录搜索模块时,topSearch 将不再自动添加到标题中。
想象一下,如果您禁用它,并且 XML 仍会调用该块 - 您拥有的模块越多,它就会越混乱,因为您每次禁用模块时都必须检查所有现有的布局文件,如果它是那里的某个地方。
\u003du003d更新u003du003d
关于您的评论:
Magento 整体主要由app/code/中的三个命名空间中的模块组成,即core、community和local。虽然community和local用于通过 Magento Connect 安装或自己构建的扩展(在 magento 语言中只是模块的另一个词),但core-namespace 包含 magento 代码库。所有的模块都构成了一个正常的 magento 安装,但它们仍然是“模块”。它们可以单独禁用、更改、覆盖等。
如果你想要在你的商店中安装的模块列表,我推荐这个扩展:https://github.com/firegento/firegento-debug/
如果您想了解更多关于 magento 结构的信息,您应该在 magentocommerce.com 上阅读 Alan Storm 的系列文章:http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-1-introduction -to-magento,以及他写的所有其他内容;)
还有一个 magento-core 中使用的所有类和函数的列表:http://docs.magentocommerce.com/
更多推荐

所有评论(0)