私が持っている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 です。
管理画面でテンプレート ヒントをオンにすることもできます。これを行う方法については、これを参照してください: Magento がテンプレートを呼び出している場所をトレースする方法は?