MagentoXML布局奇怪的行为

MagentoXML布局奇怪的行为,magento,layout,magento-1.9,magento-1.9.3,Magento,Layout,Magento 1.9,Magento 1.9.3,我正在安装1.9.3 Magento,试图优化现有的应用程序。 有一个自定义主题,它定义了自定义布局,在那里我发现了一个大混乱:到处都是重复的文件,完全荒谬地覆盖了核心行为,所以我试图整理所有东西,一天后我成功了,除非在最后一步中发生了一些非常奇怪的事情 我有两个主布局文件:local.xml和page.xml,我想将它们合并到一个文件中 一切都很好,直到我把所有的自定义头行为(清理上传的资产在单个部分),但一切都停止工作,只要我合并自定义页面布局 我的意思是: page.xml <lay

我正在安装1.9.3 Magento,试图优化现有的应用程序。 有一个自定义主题,它定义了自定义布局,在那里我发现了一个大混乱:到处都是重复的文件,完全荒谬地覆盖了核心行为,所以我试图整理所有东西,一天后我成功了,除非在最后一步中发生了一些非常奇怪的事情

我有两个主布局文件:
local.xml和page.xml
,我想将它们合并到一个文件中

一切都很好,直到我把所有的自定义头行为(清理上传的资产在单个部分),但一切都停止工作,只要我合并自定义页面布局

我的意思是:

page.xml

<layout version="0.1.0">
    <default>
        <label>All Pages</label>
            <block type="page/html_head" name="head" as="head">
                    <action method="addJs"><script>prototype/prototype.js</script></action>
                    <action ..... more js and css.../>
            </block>
            <block...../>
    </default>

    <!-- Custom page layout handles -->
    <page_empty ..../>

    <page_one_column ..../>

    <page_two_columns_left ..../>
    ....
</layout>
<layout>
    <cms_index_index translate="label">
        <label>CMS Home Page</label>
        <reference name="head"></reference>
    </cms_index_index>

    <cms_page>
        <reference name="content">
            <action method="unsetChild">
                <alias>cms.wrapper</alias>
            </action>
            <block type="cms/page" name="cms_page"/>
        </reference>
    </cms_page>

    <catalog_product_view .../>

    <catalog_category_layered .../>

    <catalog_category_default .../>   
</layout>

所有页面
prototype/prototype.js
....
local.xml中剩下的内容

<layout version="0.1.0">
    <default>
        <label>All Pages</label>
            <block type="page/html_head" name="head" as="head">
                    <action method="addJs"><script>prototype/prototype.js</script></action>
                    <action ..... more js and css.../>
            </block>
            <block...../>
    </default>

    <!-- Custom page layout handles -->
    <page_empty ..../>

    <page_one_column ..../>

    <page_two_columns_left ..../>
    ....
</layout>
<layout>
    <cms_index_index translate="label">
        <label>CMS Home Page</label>
        <reference name="head"></reference>
    </cms_index_index>

    <cms_page>
        <reference name="content">
            <action method="unsetChild">
                <alias>cms.wrapper</alias>
            </action>
            <block type="cms/page" name="cms_page"/>
        </reference>
    </cms_page>

    <catalog_product_view .../>

    <catalog_category_layered .../>

    <catalog_category_default .../>   
</layout>

CMS主页
包装机
当我尝试合并这两种布局时,问题就出现了:微型购物车和搜索表单消失了,主页中的其他元素变得混乱和重复

可能的原因是什么?自定义主题中的其他布局文件中没有影响主页或其他类似元素的其他重新定义。显然还有其他布局定义,但每个定义都有自己的角色。 我真的不知道还有什么地方可以找。 现在我可以把这两个文件分开,一切都很好

编辑: 这是我清理过的旧local.xml。


skin_jsjs/prodotto/product.js
skin_jsjs/prodotto/configurable.js
skin_jsjs/prodotto/calendar.js
skin_jsjs/prodotto/calendar-setup.js
skin_jsjs/vendor/modernizer.custom.min.js
skin_jsjs/vendor/selectivizr.js
skin_jsjs/vendor/matchMedia.js
skin_jsjs/vendor/matchMedia.addListener.js
skin_jsjs/vendor/inquire.js
skin_jsjs/vendor/slideshow.js
skin_jsjs/vendor/imagesloaded.js
skin_jsjs/minicart.js
skin_jsjs/vendor/minicart.js
skin_jsjs/prodotto/jquery.elevatetzoom-3.0.8.min.js
skin_jsjs/vendor/msrp.js
皮肤jsjs/vendor/msrp\u rwd.js
skin_jsjs/jquery.flexslider-min.js
skin_jsjs/main.js
skin_csscss/calendar-win2k-1.css
CMS主页
包装机
skin_jsjs/lib/jquery-1.10.2.min.js
第页/2列-left.phtml
3.
第页/2列-left.phtml
3.

为什么要为
cms\u index\u index
句柄定义头部引用


请提供有关清理的更多上下文,并显示完整的文件。与原始local.xml的差异将有助于将它们合并到哪个文件中?我假设您正在将所有内容移动到
local.xml
,并从主题中删除
page.xml
文件

这个问题是,
local.xml
是最后加载的,因此当您替换其中的块时,
page.xml
的任何更新都将丢失

以下是方法:
page.xml
catalog.xml
checkout.xml
之前加载。目录和签出将其他块添加到标题(例如迷你购物车和搜索表单)。但是由于
local.xml
是最后加载的,因此在加载过程中会丢失事先添加到页面xml中的所有块,例如
catalog.xml
checkout.xml

您需要做的是引用需要对其进行更改的块,而不是替换它们。因此,如果需要向头部添加css文件,请执行以下操作:

<default>
    <reference name="head">
        <!-- add blocks and actions here -->
    </reference>
</default>

您需要区分默认修改和自定义修改,并通过引用将这些修改移到
local.xml
。然后可以从主题中删除
page.xml


或者……您可以将代码分开。

只是为了完整起见而保留这些句柄,而不是覆盖所有内容。如果您觉得整个旧本地文件有用,我会粘贴它,但我已经删除了所有重复的资产,因此所有引用都不再有效。实际上,我想删除page.xml,只保留local.xml。我知道rwd/default或base/default主题的回退,但我检查了它们,基本上,我的custom page.xml是rwd/default中page.xml的副本,因此我认为如果对它们进行评估,就不会有问题。目前我还没有做这方面的工作,但我会回去告诉你。现在谢谢你的帮助。竖起大拇指!如果page.xml与
rwd/default
中的页面重复,则无需将其合并到local.xml中。我已经尝试了所有可能的组合:删除我的page.xml中的所有重复项,将所有内容都放入本地并删除页面,但是每当我取出页面时,微型购物车仍然会消失。最后,我合并了page.xml中的所有内容并删除了无用的句柄,只是在其他一些页面中保留了默认布局声明和自定义块。但我不能完全做到这一点,这真的让我心烦。Thx指数嗯。您可以发布导致问题的合并的
local.xml
吗?当然可以