【问题标题】:Updating frontend layout from a module从模块更新前端布局
【发布时间】:2010-11-06 17:28:53
【问题描述】:

我已经创建了自己的 magento 模块并成功地扩展了核心控制器和模型,但是我在使用布局 xml 文件时遇到了麻烦。我只想更新结帐多发货页面。到目前为止,我只设法覆盖了整个 checkout.xml 文件,但我更愿意只在我的 xml 文件中使用。

这是我的模块 config.xml 中的内容,tm.xml 文件位于 app/design/frontend/default/default/layout/ 中

<frontend>
        <layout>
            <updates>
                    <checkout>
                         <file>tm.xml</file>
            </checkout>
        </updates>
    </layout>
</frontend>

谢谢

【问题讨论】:

    标签: php xml magento


    【解决方案1】:

    更新:下面的文字是指在app/design 文件夹之外存储模板和XML 文件的方法。自从写下这个答案以来的这些年里,我的 Magento 核心团队一直强烈反对这种做法。他们甚至通过代码在应用程序级别强制执行此操作,并在开发新技术时继续阻止它们。强烈建议不要这样做,但出于历史原因,我将保留原样。

    首先,您可能需要考虑将布局文件放在模块中的某个位置。我不确定这种做法有多普遍,但从分发的角度来看它是有意义的。它还确保您的布局覆盖将适用,即使有人更改了默认主题。做这样的事情应该可行

    <file>../../../../../code/local/Packagename/Modulename/layouts/tm.xml</file>
    

    其次,正如您所指出的,使用上面的 XML,您将完全替换 magento 安装中的 checkout.xml。你不想这样做。相反,您希望将布局更新(该 XML 文件的内容)添加到 Magento 的可用更新列表中。所以改为这样做。

    <layout>
        <updates>
            <my_package_my_module_name>                     
                <file>../../../../../code/local/Packagename/Modulename/layouts/tm.xml</file>
            </my_package_my_module_name>
        </updates>
    </layout>        
    

    这里最大的变化是我们将 更改为 。 Magento 将本节中指定的所有 XML 加载到称为包布局的东西中。因此,您的 XML 将与 checkout.xml 中的 XML 并存。

    在 tm.xml 中,您将设置多方运输的特定规则

    <layout version="0.1.0">
        <checkout_multishipping>
            <!-- ... -->
        </checkout_multishipping>
    
        <checkout_multishipping_login>
            <!-- ... -->
        </checkout_multishipping_login>
    </layout>
    

    这里要记住的重要一点是,checkout.xml 中现有的多运输规则仍然存在。您需要编写 规则来覆盖这些规则正在执行的操作。这就是 Magento 的布局系统的工作原理。如果您还没有,我建议您查看Magento Designer's Guide,尤其是Intro to Layouts 部分。

    最后一点,您提到您正在覆盖控制器。如果您正在验证多发货控制器,则需要使用 标签,您需要使用与控制器上该页面的操作控制器/操作方法组合的名称匹配的标签

    <packagename_modulename_actioncontrollername_action />
    

    【讨论】:

    • 如何像布局布局一样直接从 mymodule 加载模板文件? TIA。
    • @Kamal 你不能,在这个时代强烈反对这样做。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多