除了local.xml之外,是否还有本地主题布局XML文件?


14

我通过创建和编辑以下文件来构建主题:

frontend/mypackage/default/layout/local.xml

我有一个商店视图“ site1”,并且希望对“ mypackage”的默认local.xml进行例外处理,因此创建了以下文件:

frontend/mypackage/site1/layout/local.xml

但是,一旦创建此文件,Magento就会跳过默认的local.xml更改。

如何告诉Magento默认使用local.xml,并在site1的local.xml中添加更改?


没门。抱歉。顺便问好问题。
user487772 2014年

我正面临着同样的情况。我要从默认主题扩展local.xml,而不是完全替换它。太糟糕了,它用选定的子主题完全替换了它。
Axel 2014年

有没有像default.xml这样的东西?还是我们可以破解遍历xml文件的Magento核心代码,同时还要检查default.xml?
Gerard Nijboer 2014年

Answers:


7

从Magento 1.9开始,您可以etc/theme.xml像这样添加自定义布局更新:

<theme>
    <layout>
        <updates>
            <my_theme>
                <file>my_theme.xml</file>
            </my_theme>
        </updates>
    </layout>
</theme>

如果您这样定义主题特定的布局而不是使用local.xml,则很容易在子主题中添加另一个更新。

不幸的是,theme.xml遇到了同样的问题,即仅使用实际主题中的一个,而不使用父主题中的一个。但是重复却少得多。

theme.xml子主题的示例:

<theme>
    <layout>
        <updates>
            <my_theme>
                <file>my_theme.xml</file>
            </my_theme>
            <my_child_theme>
                <file>my_child_theme.xml</file>
            </my_child_theme>
        </updates>
    </layout>
</theme>

来源和更多信息:http : //alanstorm.com/magento_infinite_fallback_theme_xml


5

Magento不会合并其他local.xml文件中的local.xml更改。Magento主题回退的工作方式是,将优先使用在当前主题/程序包中找到的任何文件,而不是使用任何其他类似命名的主题/程序包文件。

这样,您将无法创建合并的替代。这在Magento 2中是可能的,但是在Magento 1.x中是不可能的。

不幸的是,您必须将其从默认设置复制到本地主题,然后在其中进行修改。

祝你好运。


2
+1。可以肯定地以编程方式实现这一点,但绝对不值得付出努力。
user487772'4

3

Phil绝对正确,但从理论上讲,有一种解决方法(虽然不是很漂亮)。

您可以创建一个自定义模块,该模块将介绍布局更新。然后,在模块中,您可以检查商店视图是否不是必需的视图,然后删除此布局更新。

这种方法的坏处是您将对商店视图进行硬编码。总体而言,这看起来并不漂亮。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.