magento如何运作phtml / xml?

时间:2013-08-19 12:56:27

标签: xml magento php

我从magento开始,想知道有些事情是如何运作的。

E.g。有时,在搜索a时,我会在magento中找到一些代码:

  <? php echo $ this-> getChildChildHtml ('container2','', true, true)?>

我设法确定上面的代码完全显示了我想要工作的内容,但是我知道这条线只会绘制,就像知道通往改变它的路径并知道这会加快我的速度。工作

1 个答案:

答案 0 :(得分:0)

在magento内部网址中,您有一条路径:模块/控制器/操作。几乎每个模块在基本/默认主题中都有一个布局xml文件。布局中的节点由

组成

module's frontend name (from module etc/config.xml file) "_" controller "_" action

所以checkout.xml中的节点就像"checkout_cart_index"。在布局xml中的这些节点内,您可以引用模板<reference name="content">的部分内容,这是一个来自page.xml的大块,定义如页面中的一个phtmls(1列,2列 - 左,2列 - 右,3列,打印...):

<block type="core/text_list" name="content" as="content" translate="label"> <label>Main Content Area</label> </block> 并从phtml:

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

现在回到checkout.xml文件,您可以看到该参考的子块(请记住这也是一个块),例如:

<block type="checkout/cart" name="checkout.cart">...</block>

要查看方法列表,您应该查看该块正在实例化的类,例如,如果您在xml中看到一个具有type="checkout/cart"的块,则意味着您应该查找etc / config.xml有:

<blocks> <checkout> <class>Mage_Checkout_Block</class> </checkout> </blocks>

这实际上来自Mage_Checkout模块,因此checkout / cart转换为Mage_Checkout_Block_Cart

Magento中的大多数块扩展Mage_Core_Block_Template,它有一些有趣的方法,如setTemplate和_toHtml。

因此,对于$this->getChildChildHtml('container2','', true, true),您必须查看定义块的布局xml文件,在那里您应该看到它的子项以及container2子项。 我在catalog.xml中找到了一个container2

<block type="core/template_facade" name="product.info.container2" as="container2"> <action method="setDataByKey"><key>alias_in_layout</key><value>container2</value></action> <action method="setDataByKeyFromRegistry"><key>options_container</key><key_in_registry>product</key_in_registry></action> <action method="append"><block>product.info.options.wrapper</block></action> <action method="append"><block>product.info.options.wrapper.bottom</block></action> </block>

使用'as'值代替名称以供将来参考块。这是此块Mage_Core_Block_Template_Facade

的类