Più file di layout local.xml in un pacchetto
Domanda
dicono che ci sono due temi in un pacchetto:
- Base (Imposta come predefinito)
- Bambino (Imposta come tema principale)
Sia contenere un local.xml nella cartella di layout -. Solo il local.xml dal tema bambino sarà caricato, in modo che qualsiasi CSS, JS aggiornamenti o layout nel Base local.xml non vengono caricati
Senza usare page.xml (così permettendo la stessa funzionalità local.xml ma con l'ereditarietà), come avrei un file XML per base e ed uno per il bambino che entrambi vengono chiamati?
Sarebbe questo richiederà la costruzione di un modulo con un unico scopo di aggiungere un file XML utilizzabile (ad esempio: base-local.xml)?
Soluzione
Si sono corretti, e questo è un valido approccio e utilizzato per i siti con più temi. Ci sono un paio di ulteriori (poco conosciute, raramente utilizzati) opzioni che può essere utilizzato per gli aggiornamenti di layout che si applicano al negozio di ambiti diversi:. La maniglia negozio e la maniglia tema
Dalla azione di controllo superclasse 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;
}
Per un negozio con il codice 'deutsch' e una configurazione tema del pacchetto di 'default', 'tedesco' tema, le seguenti maniglie si applicherebbe a quasi ogni vista, come la maggior parte vista li usano:
<STORE_deutsch>
<THEME_frontend_default_german>
Con l'implementazione queste maniglie può essere utilizzato più o meno allo stesso modo in cui <default />
.