在 magento 产品template/catalog/product/view.phtml
中,我有
getchildhtml('container1','',true, true);
getchildhtml('container2','',true,true);
通过这个我得到自定义选项下拉。
它们在哪里渲染container1
以及container2
从哪里渲染?
该getChildHTML()
函数包含在http://svn.magentocommerce.com/source/branches/1.2/app/code/core/Mage/Core/Block/Abstract.php
通过查看源代码,它正在寻找以前分配为“container1”或“container2”的东西。看起来这是使用setChild()
同一文件中包含的函数设置的。
现在就动词“container1”和“container2”的来源而言,我认为它来自布局,如以下来源所示:http ://svn.magentocommerce.com/source/branches/1.4/app /design/frontend/default/modern/layout/catalog.xml
<block type="core/template_facade" name="product.info.container1" as="container1">
<action method="setDataByKey"><key>alias_in_layout</key><value>container1</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>
查看design>frontend>base>default>layout>catalog.xml中的catalog.xml文件你会看到container1和container2的定义。
<block type="core/template_facade" name="product.info.container1" as="container1">
<action method="setDataByKey"><key>alias_in_layout</key><value>container1</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>
<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>
块类型“core/template_facade”是类 Mage_Core_Block_Template_Facade
您还可以在 Admin 中打开模板提示。请查看此信息以获取如何执行此操作的信息:如何跟踪 Magento 从何处调用模板?