Beberapa file layout local.xml dalam satu paket

13

Katakanlah ada dua tema dalam satu paket:

  • Base (Tetapkan sebagai default)
  • Anak (Tetapkan sebagai tema utama)

Keduanya mengandung local.xml di folder tata letak - Hanya local.xml dari tema Child akan dimuat, sehingga setiap pembaruan CSS, JS atau tata letak di Base local.xml tidak bisa dimuat.

Tanpa menggunakan page.xml (jadi memungkinkan untuk fungsi yang sama dengan local.xml tetapi dengan warisan), bagaimana saya akan memiliki file xml untuk Base dan satu untuk Child yang keduanya dipanggil?

Apakah ini membutuhkan pembangunan modul dengan tujuan tunggal untuk menambahkan file xml yang dapat digunakan (mis: base-local.xml)?

Glo
sumber

Jawaban:

9

Anda benar, dan ini adalah pendekatan yang valid & digunakan untuk situs dengan banyak tema. Ada beberapa opsi tambahan (sedikit diketahui, jarang digunakan) yang dapat digunakan untuk pembaruan tata letak yang berlaku untuk cakupan toko yang berbeda: pegangan toko dan pegangan tema.

Dari superclass action controller Mage_Core_Controller_Varien_Action(tautan) :

public function addActionLayoutHandles()
{
    $update = $this->getLayout()->getUpdate();

    // load store handle
    $update->addHandle('STORE_'.Mage::app()->getStore()->getCode());

    // load theme handle
    $package = Mage::getSingleton('core/design_package');
    $update->addHandle(
        'THEME_'.$package->getArea().'_'.$package->getPackageName().'_'.$package->getTheme('layout')
    );

    // load action handle
    $update->addHandle(strtolower($this->getFullActionName()));

    return $this;
}

Untuk toko dengan kode 'deutsch' dan konfigurasi tema paket 'default', tema 'jerman', pegangan berikut akan berlaku untuk hampir setiap tampilan, karena sebagian besar tampilan menggunakannya:

<STORE_deutsch>
<THEME_frontend_default_german>

Dengan implementasi, pegangan ini dapat digunakan dengan cara yang hampir sama <default />.

tanda batas
sumber
Ah, itu sangat membantu untuk mengetahui - saya pikir kasus penggunaan saya sedikit berbeda dari apa yang Anda sarankan - Anda masih akan memiliki satu local.xml dalam tema 'basis' tetapi kemudian gunakan <THEME_frontend_default_german> untuk menargetkan tema anak dari tema dasar local.xml - Tidak memiliki local.xml terpisah di masing-masing tema anak? Apakah itu benar atau saya salah paham?
Glo
Itu dia. Sayangnya, pegangan yang ditargetkan berlaku secara luas, jadi tidak ada cara untuk, katakanlah, "perbarui templat blok root untuk halaman catalog_product_view di toko X". Namun, jika toko X membutuhkan file JS khusus di semua halaman, itu mungkin untuk digunakan <STORE_x><action method="addJs" block="head"><file>custom/js.js</file></action></STORE_x>.
patokan
Terima kasih banyak, walaupun tidak secara spesifik apa yang ada dalam pikiran saya, itu adalah beberapa informasi baru yang menarik, tepuk tangan.
Glo