Più file di layout local.xml in un pacchetto


13

Supponiamo che ci siano due temi in un pacchetto:

  • Base (Imposta come predefinita)
  • Bambino (Imposta come tema principale)

Entrambi contengono un file local.xml nella cartella del layout - Verrà caricato solo il file local.xml dal tema Child, quindi non verranno caricati eventuali aggiornamenti CSS, JS o layout nel local.xml di base.

Senza usare page.xml (consentendo così la stessa funzionalità di local.xml ma con l'ereditarietà), come avrei un file XML per Base e uno per Child che entrambi vengono chiamati?

Ciò richiederebbe la creazione di un modulo con il solo scopo di aggiungere un file XML utilizzabile (ad esempio: base-local.xml)?

Risposte:


9

Hai ragione, e questo è un approccio valido e usato per i siti con più temi. Esistono un paio di opzioni aggiuntive (poco note, usate raramente) che possono essere utilizzate per gli aggiornamenti del layout che si applicano a diversi ambiti del negozio: il punto vendita negozio e il tema tema.

Dalla superclasse del controller di azione Mage_Core_Controller_Varien_Action(collegamento) :

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

Per un negozio con il codice 'deutsch' e una configurazione del tema del pacchetto 'default', tema 'tedesco', i seguenti handle si applicherebbero a quasi tutte le viste, poiché la maggior parte delle viste le usa:

<STORE_deutsch>
<THEME_frontend_default_german>

Con l'implementazione, questi handle possono essere utilizzati più o meno allo stesso modo di <default />.


Ah, questo è utile sapere - penso che il mio caso d'uso sia leggermente diverso da quello che stai suggerendo - Avresti comunque un local.xml in un tema 'base' ma poi usa <THEME_frontend_default_german> per indirizzare i temi figlio da quel tema base local.xml - Non hai un local.xml separato in ciascuno dei temi figlio? È corretto o sto fraintendendo?
Glo

Questo è tutto. Sfortunatamente, gli handle mirati si applicano ampiamente, quindi non c'è modo, per esempio, di "aggiornare il modello di blocco radice per la pagina catalog_product_view nello store X". Se, tuttavia, il negozio X necessita di un file JS personalizzato su tutte le pagine, sarebbe possibile utilizzarlo <STORE_x><action method="addJs" block="head"><file>custom/js.js</file></action></STORE_x>.
benmarks

Grazie mille, sebbene non specificamente quello che avevo in mente, sono alcune nuove informazioni interessanti, evviva.
Glo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.