我刚刚开始使用Magento,我仍在努力理解布局系统的工作原理。
我正在尝试严格使用自定义模块中的代码将自定义 HTML 块添加到结帐的运输方法部分(我不想对核心文件进行任何更改)。我签出了结帐.xml看起来这是我正在寻找的块,用于将我的自定义块附加到:
<block type="checkout/onepage_shipping_method_available" name="checkout.onepage.shipping_method.available" as="available" template="checkout/onepage/shipping_method/available.phtml"/>
我的配置文件:
<modules>
<Brisqq_Cart>
<version>0.1.0</version> <!-- Version of module -->
</Brisqq_Cart>
</modules>
<frontend>
<routers>
<mymodule>
<use>standard</use>
<args>
<module>Brisqq_Cart</module>
<frontName>mymodule</frontName>
</args>
</mymodule>
</routers>
<layout>
<updates>
<mymodule>
<file>mymodule.xml</file> <!-- Our layout file name-->
</mymodule>
</updates>
</layout>
</frontend>
<global>
<blocks>
<mymodule>
<class>Brisqq_Cart_Block</class>
</mymodule>
</blocks>
</global>
</config>
我的模块.xml:
<layout>
<default>
<reference name="checkout.onepage.shipping_method.available">
<block type="mymodule/mymodule" name="mymodule" template="mymodule.phtml" />
</reference>
</default>
</layout>
这是行不通的,因为结帐页面上没有显示任何内容,但我相信我错过了一些明显的东西,我只是不知道是什么。我的第二个问题与第一个问题密切相关,如何将我的自定义 js 和 css 包含到这个特定页面?最后一个问题,如果 magento 向导正在阅读本文,如何在加载交付方法步骤后触发 jquery 函数?(同样来自自定义模块,没有核心文件更改。提前感谢!如果我输入"内容"而不是<reference name="checkout.onepage.shipping_method.available">
,代码有效,但随后我的自定义块出现在所有页面上,我希望它只显示在结帐页面上。
如果我正确理解了这个问题,不幸的是,在这种情况下,您将无法仅使用布局XML将自定义块插入文档流中。这是因为 Mage_Checkout_Block_Onepage_Shipping_Method_Available
块不提供任何插入点,这些插入点将自动在其默认模板app/design/frontend/base/default/template/checkout/onepage/shipping_method/available.phtml
中呈现子块。
为了附加自定义块,您有几个选项可以覆盖模板:
- 将模板从
base
模板复制到商店自定义模板下的同一路径中,并在那里进行编辑(即app/design/frontend/custom/default/template/.../available.phtml
)。这将是我的首选方法。
使用扩展将该块的模板路径 - 覆盖为扩展模板目录中的模板路径。
<checkout_onepage_index> <reference name="checkout.onepage.shipping_method.available"> <action method="setTemplate"><template>mymodule/shipping_method/available.phtml</template></action> </reference> </checkout_onepage_index>
在您的 available.phtml
模板版本中,您可以进行所需的任何更改,包括呈现任何子块、调用帮助程序等。