Apakah ada file XML layout tema lokal selain local.xml?

14

Saya telah membangun tema dengan membuat dan mengedit file berikut:

frontend/mypackage/default/layout/local.xml

Saya memiliki tampilan toko "site1", dan ingin membuat pengecualian pada local.xml default "mypackage", jadi saya membuat file ini:

frontend/mypackage/site1/layout/local.xml

Namun, segera setelah saya membuat file ini, Magento melewatkan perubahan local.xml default.

Bagaimana cara saya memberitahu Magento untuk menggunakan local.xml dari default, dan menambahkan perubahan di local1x site1 itu?

Gerard Nijboer
sumber
Tidak mungkin. Maaf. Pertanyaan yang bagus.
user487772
Saya menghadapi skenario yang sama persis ini. Saya akan memperpanjang local.xml dari tema default, tidak sepenuhnya menggantikannya. Sayang sekali itu menggantikannya sepenuhnya dengan sub-tema yang dipilih.
Axel
Apakah tidak ada yang seperti default.xml? Atau bisakah kita meretas kode inti Magento yang melintasi file-file xml, untuk juga memeriksa default.xml?
Gerard Nijboer

Jawaban:

7

Sejak Magento 1.9 Anda dapat menambahkan pembaruan tata letak khusus etc/theme.xmlseperti ini:

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

Jika Anda menentukan tata letak spesifik tema seperti ini alih-alih menggunakan local.xml, mudah untuk menambahkan pembaruan lain di tema anak.

Sayangnya, masalah yang sama terjadi pada theme.xml yang hanya digunakan oleh tema aktual Anda, bukan yang dari tema induk. Tapi duplikasi jauh lebih sedikit.

Contoh theme.xmluntuk tema anak:

<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>

Sumber dan info lebih lanjut: http://alanstorm.com/magento_infinite_fallback_theme_xml

Fabian Schmengler
sumber
5

Magento tidak menggabungkan perubahan local.xml dari file local.xml lainnya. Cara fallback tema Magento berfungsi adalah bahwa file apa pun yang ditemukan dalam tema / paket saat ini akan lebih disukai dan digunakan di atas file tema / paket lainnya yang bernama sama.

Dengan cara ini Anda tidak bisa membuat override gabungan. Ini akan dimungkinkan di Magento 2, tetapi tidak mungkin di Magento 1.x.

Sayangnya Anda harus menyalinnya ke tema lokal Anda dari default dan membuat modifikasi Anda di sana.

Semoga berhasil.

Philwinkle
sumber
2
+1. Hal ini pasti dapat dicapai secara terprogram tetapi pasti tidak akan layak untuk dicoba.
user487772
3

Phil benar sekali tetapi secara teoritis ada solusi (tidak terlalu cantik).

Anda dapat membuat modul khusus yang akan memperkenalkan pembaruan tata letak. Kemudian dalam modul Anda dapat memeriksa apakah tampilan toko bukan yang diperlukan dan menghapus pembaruan tata letak ini.

Hal buruk tentang pendekatan ini adalah Anda akan membuat hardcode tampilan toko. Dan secara keseluruhan ini tidak terlihat cantik.

pengguna487772
sumber