Magento - 通过模块将自定义块添加到运输方式页面



我刚刚开始使用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中呈现子块。

为了附加自定义块,您有几个选项可以覆盖模板:

  1. 将模板从base模板复制到商店自定义模板下的同一路径中,并在那里进行编辑(即 app/design/frontend/custom/default/template/.../available.phtml)。这将是我的首选方法。
  2. 使用扩展将该块的模板路径
  3. 覆盖为扩展模板目录中的模板路径。
<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 模板版本中,您可以进行所需的任何更改,包括呈现任何子块、调用帮助程序等。

最新更新