Gibt es eine andere XML-Datei für das lokale Designlayout als local.xml?

14

Ich habe ein Thema erstellt, indem ich die folgende Datei erstellt und bearbeitet habe:

frontend/mypackage/default/layout/local.xml

Ich habe eine Geschäftsansicht "site1" und möchte Ausnahmen in der Standarddatei local.xml von "mypackage" machen. Daher habe ich diese Datei erstellt:

frontend/mypackage/site1/layout/local.xml

Sobald ich diese Datei erstelle, überspringt Magento jedoch die Standardänderungen in local.xml.

Wie kann ich Magento anweisen, standardmäßig die Datei local.xml zu verwenden und die Änderungen in der Datei local.xml von site1 hinzuzufügen?

Gerard Nijboer
quelle
Auf keinen Fall. Es tut uns leid. Gute Frage übrigens.
user487772
Ich stehe genau diesem Szenario gegenüber. Ich sollte die local.xml vom Standard-Theme erweitern, nicht komplett ersetzen. Es ist schade, dass es das ausgewählte Unterthema vollständig ersetzt.
Axel
Gibt es nichts Vergleichbares wie eine default.xml? Oder könnten wir den Magento-Kerncode, der die XML-Dateien durchquert, hacken, um auch nach einer default.xml zu suchen?
Gerard Nijboer

Antworten:

7

Seit Magento 1.9 können Sie benutzerdefinierte Layout-Updates etc/theme.xmlwie folgt hinzufügen :

<theme>
    <layout>
        <updates>
            <my_theme>
                <file>my_theme.xml</file>
            </my_theme>
        </updates>
    </layout>
</theme>

Wenn Sie Ihre themenspezifischen Layouts wie local.xmlfolgt definieren, anstatt sie zu verwenden , können Sie dem untergeordneten Thema problemlos ein weiteres Update hinzufügen.

Leider tritt bei theme.xml das gleiche Problem auf, dass nur das von Ihrem eigentlichen Thema verwendet wird, nicht das von übergeordneten Themen. Aber es gibt viel weniger Überschneidungen.

Beispiel theme.xmlfür das untergeordnete Thema:

<theme>
    <layout>
        <updates>
            <my_theme>
                <file>my_theme.xml</file>
            </my_theme>
            <my_child_theme>
                <file>my_child_theme.xml</file>
            </my_child_theme>
        </updates>
    </layout>
</theme>

Quelle und weitere Informationen: http://alanstorm.com/magento_infinite_fallback_theme_xml

Fabian Schmengler
quelle
5

Magento führt local.xml-Änderungen nicht aus anderen local.xml-Dateien zusammen. Die Art und Weise, wie Magento Theme Fallback funktioniert, ist, dass jede Datei, die im aktuellen Theme / Package gefunden wird, bevorzugt und gegenüber jeder anderen Theme / Package-Datei mit ähnlichen Namen verwendet wird.

Auf diese Weise können Sie keine zusammengeführte Außerkraftsetzung erstellen. Dies ist in Magento 2 möglich, in Magento 1.x jedoch nicht.

Leider müssen Sie es von der Standardeinstellung in Ihr lokales Design kopieren und dort Ihre Änderungen vornehmen.

Viel Glück.

Philwinkle
quelle
2
+1. Dies kann zwar programmatisch erreicht werden, lohnt sich aber auf keinen Fall.
user487772
3

Phil hat absolut recht, aber theoretisch gibt es eine Problemumgehung (wenn auch nicht so hübsch).

Sie können ein benutzerdefiniertes Modul erstellen, mit dem das Layout-Update eingeführt wird. Anschließend können Sie im Modul überprüfen, ob die Geschäftsansicht nicht die erforderliche ist, und dieses Layout-Update entfernen.

Das Schlechte an diesem Ansatz ist, dass Sie die Geschäftsansicht fest codieren. Und insgesamt sieht das nicht schön aus.

user487772
quelle