繁体   English   中英

magento如何工作phtml / xml?

[英]How magento works phtml/xml?

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

例如,有时,当搜索a时,我在magento中找到了一些如下代码:

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

我设法确定上面的代码恰好显示了我要工作的代码,但是我知道这行仅绘制了,就像知道通向的路径并有权对其进行更改一样,知道这可以加快我的工作。

在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中定义的一个大块,如页面phtml之一所示(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模块,因此结帐/购物车会转换为Mage_Checkout_Block_Cart

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

因此,对于$this->getChildChildHtml('container2','', true, true)您必须查看定义了块的layout 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM