Come posso aggiungere un layout di pagina per il modulo Mage_Page?
-
16-10-2019 - |
Domanda
ho scoperto dopo l'aggiornamento Magento che Mage_Page
del config.xml
nucleo era stato modificato manualmente, e ora sto cercando di cambiare il codice XML in un modo che non lo fa nucleo sovrascrittura.
Ecco un esempio di XML nucleo:
<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>
Sto cercando di aggiungere un altro layout, come one_column
o empty
. La sovrascrittura config.xml
con app/code/local/Mage/Page/etc/config.xml
non sembra funzionare, come devo fare per farlo senza anima toccare?
Soluzione
Creare un modulo con una dipendenza da Mage_Page e aggiungere il nuovo layout nella propria configurazione:
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 / mio / 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>
Altri suggerimenti
C'è la possibilità di aggiungere ciò che è necessario app / etc / local.xml, basta creare la pagina / / nodo globale layout e aggiungere ciò che mai si vuole lì. Non è più soluzione elegante, ma funziona bene se non si desidera creare il modulo dedicato per lo scopo di aggiungere un modello di layout. Se si prevede di distribuire questa configurazione del layout a più negozi, poi fare un modulo / comunità locale per questo.