Mehrere local.xml-Layoutdateien in einem Paket

13

Angenommen, ein Paket enthält zwei Themen:

  • Basis (Als Standard festlegen)
  • Kind (Als Hauptthema festlegen)

Beide enthalten eine local.xml im Layout-Ordner. Es wird nur die local.xml aus dem Child-Design geladen, sodass keine CSS-, JS- oder Layout-Aktualisierungen in der Base local.xml geladen werden.

Wie hätte ich eine XML-Datei für Base und eine für Child, die beide aufgerufen würden, ohne page.xml zu verwenden (also die gleiche Funktionalität wie local.xml, aber mit Vererbung)?

Würde dies das Erstellen eines Moduls mit dem alleinigen Zweck erfordern, eine verwendbare XML-Datei hinzuzufügen (z. B. base-local.xml)?

Glo
quelle

Antworten:

9

Sie haben Recht, und dies ist ein gültiger und verwendeter Ansatz für Websites mit mehreren Themen. Es gibt einige zusätzliche (wenig bekannte, selten verwendete) Optionen, die für Layoutaktualisierungen verwendet werden können, die für verschiedene Geschäftsbereiche gelten: das Geschäftshandle und das Themenhandle.

Aus der Action Controller Superklasse 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;
}

Für ein Geschäft mit dem Code "deutsch" und einer Themenkonfiguration des Pakets "default", "german", gelten die folgenden Punkte für fast alle Ansichten, da die meisten Ansichten sie verwenden:

<STORE_deutsch>
<THEME_frontend_default_german>

Durch die Implementierung können diese Handles auf die gleiche Weise verwendet werden wie <default />.

benmarks
quelle
Ah, das ist hilfreich zu wissen - ich denke, mein Anwendungsfall weicht ein wenig von dem ab, was Sie vorschlagen - Sie hätten immer noch eine local.xml in einem "Basis" -Thema, verwenden dann aber das <THEME_frontend_default_german>, um die untergeordneten Themen anzuvisieren von diesem Basisthema local.xml - Haben Sie nicht in jedem der untergeordneten Themen ein separates local.xml? Ist das richtig oder missverstehe ich?
Glo
Das ist es. Leider gelten die Ziehpunkte weitgehend, sodass beispielsweise "Aktualisieren der Stammblockvorlage für die Seite catalog_product_view in Geschäft X" nicht möglich ist. Wenn Store X jedoch auf allen Seiten eine benutzerdefinierte JS-Datei benötigt, kann diese verwendet werden <STORE_x><action method="addJs" block="head"><file>custom/js.js</file></action></STORE_x>.
benmarks
Vielen Dank, auch wenn ich nicht genau das vorhatte, was ich vorhatte, das sind einige interessante neue Informationen, Prost.
Glo