Existe-t-il un fichier XML de disposition de thème local autre que local.xml?

14

J'ai construit un thème en créant et en éditant le fichier suivant:

frontend/mypackage/default/layout/local.xml

J'ai une vue de magasin "site1", et je souhaite faire des exceptions sur le fichier local.xml par défaut de "mypackage", j'ai donc créé ce fichier:

frontend/mypackage/site1/layout/local.xml

Cependant, dès que je crée ce fichier, Magento ignore les modifications par défaut local.xml.

Comment puis-je dire à Magento d'utiliser le fichier local.xml par défaut et d'y ajouter les modifications du fichier local.xml de site1?

Gerard Nijboer
la source
En aucune façon. Pardon. Bonne question d'ailleurs.
user487772
Je suis face à ce même scénario exact. Je devais étendre le fichier local.xml à partir du thème par défaut, pas le remplacer complètement. C'est dommage qu'il le remplace entièrement par le sous-thème sélectionné.
Axel
N'y a-t-il rien de tel qu'un default.xml? Ou pourrions-nous pirater le code principal de Magento qui traverse les fichiers xml, pour vérifier également un default.xml?
Gerard Nijboer

Réponses:

7

Depuis Magento 1.9, vous pouvez ajouter des mises à jour de disposition personnalisées etc/theme.xmlcomme ceci:

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

Si vous définissez des dispositions spécifiques à votre thème comme celle-ci au lieu de les utiliser local.xml, il est facile d'ajouter une autre mise à jour dans le thème enfant.

Malheureusement, le même problème se pose avec theme.xml que seul celui de votre thème réel est utilisé, pas celui des thèmes parents. Mais il y a beaucoup moins de dédoublements.

Exemple theme.xmlpour le thème enfant:

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

Source et plus d'informations: http://alanstorm.com/magento_infinite_fallback_theme_xml

Fabian Schmengler
la source
5

Magento ne fusionne pas les modifications local.xml des autres fichiers local.xml. La façon dont le thème de secours de Magento fonctionne est que tout fichier trouvé dans le thème / package actuel sera préféré et utilisé par rapport à tout autre fichier de thème / package portant le même nom.

De cette façon, vous ne pouvez pas créer de remplacement fusionné. Cela sera possible dans Magento 2, mais n'est pas possible dans Magento 1.x.

Malheureusement, vous devrez le copier sur votre thème local par défaut et y apporter vos modifications.

Bonne chance.

philwinkle
la source
2
+1. Cela peut certainement être réalisé par programme, mais ne sera certainement pas digne d'un effort.
user487772
3

Phil a tout à fait raison, mais théoriquement, il existe une solution de contournement (pas si jolie que cela).

Vous pouvez créer un module personnalisé qui introduira la mise à jour de la mise en page. Ensuite, dans le module, vous pouvez vérifier si la vue du magasin n'est pas celle qui est requise et supprimer cette mise à jour de la mise en page.

La mauvaise chose à propos de cette approche est que vous coderez en dur la vue du magasin. Et dans l'ensemble, cela n'a pas l'air joli.

user487772
la source