Comment puis-je ajouter une mise en page au module Mage_Page?


11

J'ai découvert après la mise à niveau Magento que le noyau Mage_Page« s config.xmlont été modifiés manuellement, et maintenant je suis à la recherche de changer le code XML d'une manière qui ne noyau Ecraser.

Voici un exemple du XML de base:

<config>
    <modules>
        <Mage_Page>
            <version>1.6.0.0</version>
        </Mage_Page>
    </modules>
    <global>
        <models>
            <page>
                <class>Mage_Page_Model</class>
            </page>
        </models>
        <blocks>
            <page>
                <class>Mage_Page_Block</class>
            </page>
        </blocks>
        <page>
            <layouts>
                <empty module="page" translate="label">
                    <label>Empty</label>
                    <template>page/empty.phtml</template>
                    <layout_handle>page_empty</layout_handle>
                </empty>
                <one_column module="page" translate="label">
                    <label>1 column</label>
                    <template>page/1column.phtml</template>
                    <layout_handle>page_one_column</layout_handle>
                    <is_default>1</is_default>

Je cherche à ajouter une autre disposition, comme one_columnou empty. L'écrasement config.xmlavec app/code/local/Mage/Page/etc/config.xmlne semble pas fonctionner, comment dois-je faire sans toucher au cœur?

Réponses:


5

Créez un module avec une dépendance sur Mage_Page et ajoutez la nouvelle disposition dans votre propre configuration:

app / etc / modules / My_Layout.xml

<?xml version="1.0"?>
<config>
    <modules>
        <My_Layout>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Page />
            </depends>
        </My_Layout>
    </modules>
</config>

app / code / local / My / Layout / etc / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <My_Layout>
            <version>1.0.0</version>
        </My_Layout>
    </modules>
    <global>
        <page>
            <layouts>
                <my_layout module="page" translate="label">
                    <label>My Layout</label>
                    <template>page/mylayout.phtml</template>
                    <layout_handle>my_layout</layout_handle>
                </my_layout>
            </layouts>
        </page>
    </global>
    <frontend>
        <layout>
            <updates>
                <my_layout module="My_Layout">
                    <file>my_layout.xml</file>
                </my_layout>
            </updates>
        </layout>
    </frontend>
</config>

app / design / frontend / base / default / layout / my_layout.xml

<?xml version="1.0"?>
<layout version="0.1.0">
    <my_layout translate="label">
        <label>All My Layout Pages</label>
        <reference name="root">
            <action method="setTemplate"><template>page/mylayout.phtml</template></action>
            <!-- Mark root page block that template is applied -->
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </my_layout>
</layout>

Il est également utile de fournir la poignée de mise à jour de la mise en page associée dans un fichier de mise à jour de mise en page personnalisé pour le module. Ref la configuration de mise en page d'origine dans le Mage_Pagemodule (lien) et les déclarations de poignée de mise à jour correspondantes (lien)
benmarks

@benmarks fait! :)
Rick Kuipers

1

Il y a la possibilité d'ajouter ce dont vous avez besoin à app / etc / local.xml, il suffit de créer un nœud global / page / layouts et d'ajouter ce que vous voulez là-bas. Ce n'est pas la solution la plus élégante, mais cela fonctionne bien si vous ne souhaitez pas créer de module dédié dans le but d'ajouter un modèle de mise en page. Si vous prévoyez de distribuer cette configuration de mise en page à plus de magasins, faites-y un module local / communautaire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.