Magento - 通过模块向运输方法页面添加自定义块

时间:2016-02-23 21:50:42

标签: php jquery magento

我刚刚开始使用Magento,我仍然在努力了解布局系统的工作原理。

我正在尝试使用自定义模块中的代码(我不想对核心文件进行任何更改)严格地将自定义HTML块添加到结帐的运送方法部分。我检查了checkout.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>

mymodule.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功能? (也来自自定义模块,没有核心文件更改。) 提前致谢! PS。如果我把内容放在&#39;而不是<reference name="checkout.onepage.shipping_method.available">,但我的自定义屏幕显示在所有页面上,我希望它仅在结帐页面上显示。

1 个答案:

答案 0 :(得分:0)

如果我已正确理解该问题,那么很遗憾,您将无法仅使用布局XML将自定义块插入到文档流中。这是因为app/design/frontend/base/default/template/checkout/onepage/shipping_method/available.phtml块没有提供任何插入点,这些插入点会自动在其默认模板base中呈现子块。

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

  1. 将模板从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> )。这将是我的首选方法。
  2. 使用您的扩展程序将该块的模板路径覆盖到扩展程序模板目录中的模板路径。
  3. available.phtml

    在您的$ActiveSheet->getStyle("A1:Z1")->applyFromArray( array( 'borders' => array( 'allborders' => array( 'style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('rgb' => 'DDDDDD') ) ) ) ); 模板版本中,您可以进行所需的任何更改,包括渲染任何子块,调用帮助程序等。