0

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

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

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

我设法确定上面的这段代码准确地显示了我想要工作的内容,但我知道这条线只画了 ,想知道到达的路径和改变它的权力,知道这加快了我的工作。

4

1 回答 1

0

在magento urls里面你有一个路径:模块/控制器/动作。几乎每个模块在基本/默认主题中都有一个布局 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 之一(1column、2columns-left、2columns-right、3columns、print ...)所示定义:

<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

于 2013-08-19T13:53:13.447 回答