Existe um arquivo XML de layout de tema local diferente de local.xml?

14

Criei um tema criando e editando o seguinte arquivo:

frontend/mypackage/default/layout/local.xml

Eu tenho uma visualização de loja "site1" e desejo fazer exceções no local.xml padrão de "mypackage", então criei este arquivo:

frontend/mypackage/site1/layout/local.xml

No entanto, assim que eu crio esse arquivo, o Magento ignora as alterações padrão do local.xml.

Como eu digo ao Magento para usar o local.xml por padrão e adicionar as alterações no local.xml do site1?

Gerard Nijboer
fonte
De jeito nenhum. Desculpe. Boa pergunta, a propósito.
precisa saber é o seguinte
Estou enfrentando exatamente esse mesmo cenário. Eu deveria estender o local.xml do tema padrão, não substituí-lo completamente. Pena que o substitua totalmente pelo subtema selecionado.
Axel
Não há nada como um default.xml? Ou poderíamos hackear o código principal do Magento que atravessa os arquivos xml, para também verificar o default.xml?
Gerard Nijboer

Respostas:

7

Desde o Magento 1.9, você pode adicionar atualizações de layout personalizadas da etc/theme.xmlseguinte maneira:

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

Se você definir layouts específicos do tema como este em vez de usar local.xml, será fácil adicionar outra atualização no tema filho.

Infelizmente, com o theme.xml, o mesmo problema ocorre com o uso apenas do tema atual, e não dos temas principais. Mas há muito menos duplicação.

Exemplo theme.xmlpara o tema filho:

<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 mais informações: http://alanstorm.com/magento_infinite_fallback_theme_xml

Fabian Schmengler
fonte
5

O Magento não mescla alterações local.xml de outros arquivos local.xml. O funcionamento do fallback do tema Magento é que qualquer arquivo encontrado no tema / pacote atual será preferido e usado em relação a qualquer outro arquivo de tema / pacote com o mesmo nome.

Dessa maneira, você não pode criar uma substituição mesclada. Isso será possível no Magento 2, mas não no Magento 1.x.

Infelizmente, você terá que copiá-lo para o tema local a partir do padrão e fazer suas modificações lá.

Boa sorte.

philwinkle
fonte
2
+1. Isso pode ser conseguido de forma programática, mas definitivamente não será digno de um esforço.
user487772
3

Phil está absolutamente certo, mas teoricamente há uma solução alternativa (não tão bonita assim).

Você pode criar um módulo personalizado que apresentará a atualização de layout. Em seguida, no módulo, você pode verificar se a visualização da loja não é a necessária e remover esta atualização de layout.

O lado ruim dessa abordagem é que você codificará a visualização da loja. E no geral isso não parece bonito.

user487772
fonte