getChildHtml没有获得任何价值或内容

时间:2014-10-21 03:21:03

标签: php magento

我刚学会了如何使用Magento,从制作新主题开始。我创建了page.xml,footer.phtml,header.phtml,2columns-left.phtml,head.phtml。问题是tempalte页面中的getChildHtml没有得到任何内容。有谁知道我哪里错了?

这就是我得到的

rendered html

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>

提前谢谢(•ω•)σ

1 个答案:

答案 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(默认)布局系统,他们如何使用它..