Bir pakette birden fazla local.xml mizanpaj dosyası


13

Bir pakette iki tema olduğunu varsayalım:

  • Temel (Varsayılan olarak ayarla)
  • Çocuk (Ana tema olarak ayarla)

Her ikisi de mizanpaj klasöründe bir local.xml içerir - Yalnızca Child temasındaki local.xml yüklenir, bu nedenle Base local.xml'deki CSS, JS veya mizanpaj güncellemeleri yüklenmez.

Page.xml kullanmadan (yani local.xml ile aynı işlevselliğe izin verir, ancak kalıtımla), Base için bir xml dosyasına ve her ikisinin de çağrıldığı Child için bir xml dosyasına nasıl sahip olabilirim?

Bu, yalnızca kullanılabilir bir xml dosyası eklemek için bir modül oluşturmayı gerektirir mi (örn: base-local.xml)?

Yanıtlar:


9

Haklısınız ve bu, birden fazla temalı siteler için geçerli ve kullanılmış bir yaklaşımdır. Farklı mağaza kapsamlarına uygulanan mizanpaj güncellemeleri için kullanılabilecek birkaç ek (az bilinen, nadiren kullanılan) seçenek vardır: mağaza tanıtıcısı ve tema tanıtıcısı.

Eylem denetleyicisi üst sınıfından Mage_Core_Controller_Varien_Action(bağlantı) :

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

'Deutsch' koduna sahip bir mağaza ve 'varsayılan' paket, 'alman' teması tema yapılandırması için, çoğu görünüm kullanıldığından aşağıdaki görünümler hemen hemen her görünüm için geçerlidir:

<STORE_deutsch>
<THEME_frontend_default_german>

Uygulama ile, bu kulplar ile aynı şekilde kullanılabilir <default />.


Ah, bu bilmek yararlı olur - Bence benim kullanım durumum ne olsa önermek biraz farklı - Hala bir 'base' tema bir local.xml olurdu ama sonra alt temaları hedeflemek için <THEME_frontend_default_german> kullanın local.xml - alt temaların her birinde ayrı bir local.xml dosyanız yok mu? Bu doğru mu yoksa yanlış mı anladım?
Glo

Bu kadar. Ne yazık ki, hedeflenen tanıtıcılar geniş çapta geçerlidir, bu nedenle, "X mağazasındaki catalog_product_view sayfası için kök blok şablonunu güncelle" demenin bir yolu yoktur. Bununla birlikte, X deposunun tüm sayfalarda özel bir JS dosyasına ihtiyacı varsa, kullanmak mümkün olacaktır <STORE_x><action method="addJs" block="head"><file>custom/js.js</file></action></STORE_x>.
benmarks

Çok teşekkürler, özellikle aklımdakiler olmasa da, bu ilginç yeni bilgiler, şerefe.
Glo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.