我从magento开始,想知道有些事情是如何运作的。
E.g。有时,在搜索a时,我会在magento中找到一些代码:
<? php echo $ this-> getChildChildHtml ('container2','', true, true)?>
我设法确定上面的代码完全显示了我想要工作的内容,但是我知道这条线只会绘制,就像知道通往改变它的路径并知道这会加快我的速度。工作
答案 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