Urv*_*sha 9 magento content-management-system e-commerce
我正在尝试重新组织我的右侧边栏.在模板(2columns-right)中,它调用:
<?php echo $this->getChildHtml('right') ?>
我在哪里可以找到这个变量的内容?
小智 22
对方法的调用getChildHtml()加载子块的HTML,并使用传递给方法的名称,因此在这种情况下,我们正在寻找一个名为right的子块.
要确定在哪里找到这个子块,我们需要知道哪个块正在调用此方法.我知道对该getChildHtml()方法的特定调用出现在主页面列模板中,因为右边是其中一列.所以看看page.xml布局文件并搜索你找到方法调用的模板文件,你会发现这样的东西:
<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>
</reference>
Run Code Online (Sandbox Code Playgroud)
使用<reference>布局文件中的<action>标记可以更改目标块,标记允许您在正在使用的块内运行块方法.因此,此布局部分在根块内设置模板.由此我们知道它是调用该方法的根块getChildHtml().
接下来让我们看一下在布局中定义根块的位置,它位于相同的page.xml布局文件中,并且应该在顶部附近:
<block type="page/html" name="root" output="toHtml" template="page/3columns.phtml">
...
<block type="core/text_list" name="right" as="right" translate="label">
<label>Right Column</label>
</block>
...
</block>
Run Code Online (Sandbox Code Playgroud)
在这个块中有很多定义,但你可以看到它被赋予了名称root并定义了相当多的子块.其中一个子块被命名为right,正是这个块的HTML由该getChildHtml()方法输出.重要的是要注意块类型 - core/text_list.这是一种特殊的块类型,这意味着当使用该getChildHtml()方法渲染此块的HTML时,也会渲染子块.如果块类型page/html与根块类似,则添加到右侧块的每个子块都需要它自己的getChildHtml()方法调用,使用此块类型,您只需要调用,getChildHtml('right')并且还将呈现所有子块.
正如您所看到的,此处定义了正确的块,但它是空的.这是因为在完全相同的方式为您的有标签引用根块(<reference name="root">)等布局文件添加子块到右通过引用块右块.
<reference name="right">
...
</reference>
Run Code Online (Sandbox Code Playgroud)
因此,为了最终回答您的问题(并希望在此过程中提供一些信息),您需要查看布局文件而不是page.xml对右侧块的引用,此处您将通过getChildHtml()方法调用找到所有子内容输出.
如果不创建模块,可以更改自己的模块布局文件或布局文件中添加到右侧块的内容local.xml.我local.xml在这里简要介绍了我的答案中的布局文件,其中包含示例语法,用于添加新块并删除在其他布局文件中添加的块.
您将在您的layout.xml 文件中找到所有内容的来源。它将有列表块,在这些块下调用.phtml 文件和数据来自那里。我希望您理解我想要传达的内容。
| 归档时间: |
|
| 查看次数: |
40239 次 |
| 最近记录: |