Esiste un file XML di layout del tema locale diverso da local.xml?


14

Ho creato un tema creando e modificando il seguente file:

frontend/mypackage/default/layout/local.xml

Ho una vista negozio "site1" e desidero fare eccezioni sul local.xml predefinito di "mypackage", quindi ho creato questo file:

frontend/mypackage/site1/layout/local.xml

Tuttavia, non appena creo questo file, Magento salta le modifiche local.xml predefinite.

Come posso dire a Magento di utilizzare local.xml per impostazione predefinita e aggiungere le modifiche a local1xml di site1 a quello?


Non c'è modo. Scusa. Buona domanda a proposito.
user487772

Sto affrontando esattamente lo stesso scenario. Dovevo estendere local.xml dal tema predefinito, non sostituirlo completamente. Peccato che lo sostituisca interamente con il sottotema selezionato.
Axel

Non c'è niente come un default.xml? O potremmo hackerare il codice di base di Magento che attraversa i file xml, per verificare anche la presenza di un default.xml?
Gerard Nijboer,

Risposte:


7

Da Magento 1.9 puoi aggiungere aggiornamenti di layout personalizzati in etc/theme.xmlquesto modo:

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

Se si definiscono layout specifici del tema come questo invece di utilizzarli local.xml, è facile aggiungere un altro aggiornamento nel tema figlio.

Sfortunatamente, lo stesso problema si verifica con theme.xml che viene utilizzato solo quello del tema reale, non quello dei temi principali. Ma c'è molto meno duplicazione.

Esempio theme.xmlper il tema figlio:

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

Fonte e maggiori informazioni: http://alanstorm.com/magento_infinite_fallback_theme_xml


5

Magento non unisce le modifiche local.xml da altri file local.xml. Il modo in cui funziona il fallback del tema Magento è che qualsiasi file trovato nel tema / pacchetto corrente verrà preferito e utilizzato su qualsiasi altro tema / file pacchetto con nomi simili.

In questo modo non è possibile creare una sostituzione unita. Ciò sarà possibile in Magento 2, ma non è possibile in Magento 1.x.

Sfortunatamente dovrai copiarlo sul tema locale dall'impostazione predefinita e apportare le modifiche lì.

Buona fortuna.


2
+1. Questo può essere sicuramente raggiunto a livello di programmazione, ma sicuramente non sarà degno di sforzo.
user487772

3

Phil ha assolutamente ragione, ma teoricamente esiste una soluzione (non così carina).

È possibile creare un modulo personalizzato che introdurrà l'aggiornamento del layout. Quindi nel modulo è possibile verificare se la vista dello store non è quella richiesta e rimuovere questo aggiornamento del layout.

La cosa negativa di questo approccio è che codificherai la vista dello store. E nel complesso questo non sembra carino.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.