Mehrere lokale.xml -Layoutdateien in einem Paket
Frage
Sagen Sie, es gibt zwei Themen in einem Paket:
- Basis (als Standard festgelegt)
- Kind (als Hauptthema festgelegt)
Beide enthalten im Layout -Ordner ein lokal.xml - nur die lokale.xml aus dem untergeordneten Thema werden geladen, sodass alle CSS-, JS- oder Layout -Updates in der Basis lokal.xml nicht geladen werden.
Wie hätte ich eine XML -Datei für Basis und eine für Kind, die beide aufgerufen werden?
Würde dies erfordern, ein Modul mit einem alleinigen Zweck zu erstellen, eine nutzbare XML-Datei hinzuzufügen (z. B. base-local.xml)?
Lösung
Sie haben Recht und dies ist ein gültiger und gebrauchter Ansatz für Websites mit mehreren Themen. Es gibt einige zusätzliche (wenig bekannte, selten verwendete) Optionen, die für Layout-Updates verwendet werden können, die für verschiedene Speicherbereiche gelten: den Store-Handle und das Themenhandle.
Aus der Aktionscontroller Superklasse Mage_Core_Controller_Varien_Action
(Verknüpfung):
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;
}
Für einen Speicher mit dem Code 'Deutsch' und einer Themenkonfiguration von 'Standard' Paket 'deutsch' thema gilt die folgenden Handles für fast jede Ansicht, da die meisten Ansichten sie verwenden:
<STORE_deutsch>
<THEME_frontend_default_german>
Durch Implementierung können diese Handles genauso genutzt werden wie <default />
.