Wiele plików układu local.xml w pakiecie

13

Powiedzmy, że są dwa motywy w pakiecie:

  • Baza (Ustaw jako domyślną)
  • Dziecko (Ustaw jako główny motyw)

Oba zawierają plik local.xml w folderze układu - zostanie załadowany tylko plik local.xml z motywu potomnego, więc żadne aktualizacje CSS, JS lub układu w pliku Base.xml nie zostaną załadowane.

Bez korzystania z page.xml (pozwalając na taką samą funkcjonalność jak local.xml, ale z dziedziczeniem), w jaki sposób miałbym mieć plik xml dla bazy i jeden dla dziecka, które zostaną wywołane?

Czy wymagałoby to zbudowania modułu wyłącznie w celu dodania użytecznego pliku xml (np .: base-local.xml)?

Glo
źródło

Odpowiedzi:

9

Masz rację i jest to prawidłowe i używane podejście do witryn z wieloma tematami. Istnieje kilka dodatkowych (mało znanych, rzadko używanych) opcji, których można użyć do aktualizacji układu, które dotyczą różnych zakresów sklepu: uchwyt sklepu i uchwyt motywu.

Z nadklasy kontrolera akcji Mage_Core_Controller_Varien_Action(link) :

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

W przypadku sklepu z kodem „deutsch” i konfiguracją motywu „domyślnego” pakietu, motywu „niemieckiego”, następujące uchwyty będą miały zastosowanie do prawie każdego widoku, ponieważ korzysta z nich większość widoków:

<STORE_deutsch>
<THEME_frontend_default_german>

Dzięki implementacji uchwyty te można wykorzystywać w bardzo podobny sposób jak <default />.

zalety
źródło
Ach, warto wiedzieć - myślę, że mój przypadek użycia jest nieco inny niż to, co sugerujesz - Nadal będziesz mieć jeden plik local.xml w motywie „podstawowym”, ale następnie użyj <THEME_frontend_default_german>, aby kierować na motywy podrzędne z tego podstawowego motywu local.xml - Nie masz osobnego local.xml w każdym z podrzędnych motywów? Czy to prawda, czy też nieporozumienie?
Glo,
Otóż ​​to. Niestety, ukierunkowane uchwyty mają szerokie zastosowanie, więc nie można, powiedzmy, „zaktualizować szablonu bloku głównego dla strony katalog_produktu_wyświetlania w sklepie X”. Jeśli jednak sklep X potrzebuje niestandardowego pliku JS na wszystkich stronach, można go użyć <STORE_x><action method="addJs" block="head"><file>custom/js.js</file></action></STORE_x>.
zyskuje
Bardzo dziękuję, choć nie to, co miałem na myśli, to kilka interesujących nowych informacji, na zdrowie.
Glo,