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 14

私はこのまったく同じシナリオに直面しています。local.xmlを完全に置き換えるのではなく、デフォルトのテーマから拡張することでした。選択したサブテーマに完全に置き換えられるのは残念です。
アクセル14

default.xmlのようなものはありませんか?または、default.xmlを確認するために、xmlファイルを走査するMagentoコアコードをハッキングできますか?
ジェラルドナイボー14

回答:


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にも当てはまります。親テーマのテーマではなく、実際のテーマの1つのみが使用されます。ただし、重複ははるかに少なくなります。

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

3

Philは絶対に正しいのですが、理論的には回避策があります(それほどきれいではありません)。

レイアウトの更新を導入するカスタムモジュールを作成できます。次に、モジュールで、ストアビューが必要なものではないかどうかを確認し、このレイアウトの更新を削除します。

このアプローチの悪い点は、ストアビューをハードコーディングすることです。そして全体的にこれはきれいに見えません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.