【问题标题】:Magento - adding custom block to the shipping methods page via moduleMagento - 通过模块将自定义块添加到运输方式页面
【发布时间】:2016-02-23 21:50:42
【问题描述】:

我刚开始使用 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。如果我输入“内容”而不是 &lt;reference name="checkout.onepage.shipping_method.available"&gt;,则代码有效,但随后我的自定义块显示在所有页面上,我希望它仅显示在结帐页面上。

【问题讨论】:

  • 自定义块的目的是什么?如果您尝试在结帐时提供自定义运输方式,您可以使用 a different way
  • 我已经有自定义运输方式,我正在尝试向其中添加自定义 HTML 块。
  • 好的,您的送货方式是否已经显示为选项之一,并且您正在尝试在列表中附加一个自定义块?
  • 是的,就是这样!它出现了,我正在尝试将我的自定义块附加到它。
  • 我有本教程运输方法的副本,它有效。现在我需要将自定义块附加到它。 code.tutsplus.com/tutorials/…

标签: php jquery magento


【解决方案1】:

如果我正确理解了这个问题,不幸的是,您将无法仅使用布局 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. 使用您的扩展程序将该块的模板路径覆盖为您的扩展程序模板目录中的一个。
<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 模板版本中,您可以进行所需的任何更改,包括渲染任何子块、调用帮助程序等。

【讨论】:

  • 这种方法的问题是我不应该更改/复制或对模块外的任何文件做任何事情。我设法将我的自定义块仅与 layout.xml 插入到具有运输方法的同一页面中。我应该使用 JS 将我的自定义 html 块移动到正确的位置。为了成功地做到这一点,我需要让我的 JS 在所有 magento JS 之后触发。你知道如何在所有 magento 原型(和所有其他内联)js 之后让我的自定义 JS 触发吗?
猜你喜欢
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多