我刚学会了如何使用Magento,从制作新主题开始。我创建了page.xml,footer.phtml,header.phtml,2columns-left.phtml,head.phtml。问题是tempalte页面中的getChildHtml没有得到任何内容。有谁知道我哪里错了?
这就是我得到的
page.xml
<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.1.0">
<default translate="label" module="page">
<label>All Pages</label>
<block type="page/html" name="root" output="toHtml" template="page/2columns-left.phtml"/>
<block type="page/html_head" name="head" as="head">
<action method="addCss"><stylesheet>css/css.css</stylesheet></action>
</block>
<block type="core/text_list" name="after_body_start" as="after_body_start" translate="label">
<label>Page Top</label>
</block>
<block type="page/html_header" name="header" as="header">
<block type="core/template" name="top.search" as="topSearch"/>
</block>
<label>Page Header</label>
<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="core/text_list" name="content" as="content" translate="label">
<label>Main Content Area</label>
<block type="page/html_breadcrumbs" name="breadcrumbs" as="breadcrumbs"/>
<block type="core/text_list" name="left" as="left" translate="label">
<label>Left Column</label>
</block>
<block type="core/messages" name="global_messages" as="global_messages"/>
<block type="core/messages" name="messages" as="messages"/>
<block type="core/text_list" name="right" as="right" translate="label">
<label>Right Column</label>
</block>
</block>
<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml"></block>
</default>
2columns-left.phtml
<!DOCTYPE html>
<!--[if lt IE 7 ]> <html lang="en" id="top" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" id="top" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" id="top" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]> <html lang="en" id="top" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" id="top" class="no-js"> <!--<![endif]-->
<head>
<?php echo $this->getChildHtml('head') ?>
</head>
<body<?php echo $this->getBodyClass()?' class="'.$this->getBodyClass().'"':'' ?>>
<?php echo $this->getChildHtml('after_body_start') ?>
<div id="web-container">
<?php echo $this->getChildHtml('global_notices') ?>
<div class="page">
<?php echo $this->getChildHtml('header') ?>
<div class="content">
<?php echo $this->getChildHtml('topMenu') ?>
<?php echo $this->getChildHtml('breadcrumbs') ?>
<?php // This left_first block will display above the main content on smaller viewports ?>
<div class="left"><?php echo $this->getChildHtml('left') ?></div>
<div class="right">
<?php echo $this->getChildHtml('global_messages') ?>
<?php echo $this->getChildHtml('right') ?>
</div>
</div>
</div>
<?php echo $this->getChildHtml('footer_before') ?>
<?php echo $this->getChildHtml('footer') ?>
<?php echo $this->getChildHtml('global_cookie_notice') ?>
<?php echo $this->getChildHtml('before_body_end') ?>
</div>
</div>
<?php echo $this->getAbsoluteFooter() ?>
</body>
</html>
提前谢谢(•ω•)σ
答案 0 :(得分:2)
getChildHtml()
是一种方法,可以从您的布局文件.phtml
中分配的(.xml)
文件中加载内容。 <{1}}文件中的所有内容都很好,除了一件事,你需要添加它,
page.xml
布局文件中的 <page_two_columns_right translate="label">
<label>All Two-Column Layout Pages (Right Column)</label>
<reference name="root">
<action method="setTemplate"><template>page/2columns-right.phtml</template></action>
<!-- Mark root page block that template is applied -->
<action method="setIsHandle"><applied>1</applied></action>
<action method="setLayoutCode"><name>two_columns_right</name></action>
</reference>
</page_two_columns_right>
标记允许您更改目标块,<reference>
标记允许您在正在使用的块内运行块方法。有关更多信息,请参阅 here 。
上面提到的块是从我的magento 1.9复制的。它可能会有较低的版本。所以请参考您的magento(默认)布局系统,他们如何使用它..