¿Existe un archivo XML de diseño de tema local que no sea local.xml?

14

He creado un tema creando y editando el siguiente archivo:

frontend/mypackage/default/layout/local.xml

Tengo una vista de tienda "sitio1" y deseo hacer excepciones en el local.xml predeterminado de "mypackage", así que creé este archivo:

frontend/mypackage/site1/layout/local.xml

Sin embargo, tan pronto como creo este archivo, Magento omite los cambios predeterminados local.xml.

¿Cómo le digo a Magento que use el local.xml de manera predeterminada y agregue los cambios en el local.xml del sitio1?

Gerard Nijboer
fuente
De ninguna manera. Lo siento. Buena pregunta por cierto.
user487772
Estoy enfrentando exactamente el mismo escenario. Debía extender el local.xml del tema predeterminado, no reemplazarlo por completo. Es una pena que lo reemplace por completo con el subtema seleccionado.
Axel
¿No hay nada como default.xml? ¿O podríamos hackear el código central de Magento que atraviesa los archivos xml, para verificar también un default.xml?
Gerard Nijboer

Respuestas:

7

Desde Magento 1.9 puede agregar actualizaciones de diseño personalizadas de etc/theme.xmlesta manera:

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

Si define los diseños específicos de su tema como este en lugar de usarlo local.xml, es fácil agregar otra actualización en el tema secundario.

Desafortunadamente, el mismo problema va con theme.xml que solo se usa el del tema real, no el de los temas principales. Pero hay mucha menos duplicación.

Ejemplo theme.xmlpara el tema hijo:

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

Fuente y más información: http://alanstorm.com/magento_infinite_fallback_theme_xml

Fabian Schmengler
fuente
5

Magento no combina los cambios locales.xml de otros archivos local.xml. La forma en que funciona el respaldo de temas de Magento es que cualquier archivo encontrado en el tema / paquete actual será preferido y utilizado sobre cualquier otro archivo de tema / paquete con un nombre similar.

De esta manera, no puede crear una anulación combinada. Esto será posible en Magento 2, pero no es posible en Magento 1.x.

Lamentablemente, tendrá que copiarlo a su tema local desde el valor predeterminado y realizar sus modificaciones allí.

La mejor de las suertes.

philwinkle
fuente
2
+1. Esto seguramente se puede lograr programáticamente, pero definitivamente no será digno de un esfuerzo.
user487772
3

Phil tiene toda la razón, pero en teoría hay una solución alternativa (aunque no tan bonita).

Puede crear un módulo personalizado que presente la actualización del diseño. Luego, en el módulo, puede verificar si la vista de la tienda no es la que se requiere y eliminar esta actualización de diseño.

Lo malo de este enfoque es que codificará la vista de la tienda. Y en general esto no se ve bonito.

usuario487772
fuente