Para los system.xml
archivos no funciona como lo hace para los archivos de clase. Los system.xml
archivos se recopilan de los módulos activos de Magento. Simplemente copiar uno en la local
carpeta no significa que esté en un módulo, porque el archivo de declaración del módulo todavía dice que el módulo pertenece al conjunto de core
códigos.
Si desea agregar nuevos campos a una sección o anular algunos de los campos que necesita para crear su propio módulo.
Aquí hay un ejemplo de cómo puede agregar un nuevo campo en la sección Catalog->Frontend
y cómo puede anular uno en la misma sección.
Digamos que su módulo se llama Easylife_Catalog
.
Necesitará los siguientes archivos:
app/etc/modules/Easylife_Catalog.xml
- el archivo de declaración
<?xml version="1.0"?>
<config>
<modules>
<Easylife_Catalog>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Catalog />
</depends>
</Easylife_Catalog>
</modules>
</config>
app/code/local/Easylife/Catalog/etc/config.xml
- el archivo de configuración
<?xml version="1.0"?>
<config>
<modules>
<Easylife_Catalog>
<version>0.0.1</version>
</Easylife_Catalog>
</modules>
</config>
app/etc/local/Easylife/Catalog/etc/system.xml
- sistema-> archivo de configuración
Supongamos que desea cambiar el List Mode
campo para que esté disponible solo a nivel global (sin nivel de vista de sitio web y tienda). La ruta de configuración es catalog/frontend/list_mode
. Entonces system.xml
se verá así:
<?xml version="1.0"?>
<config>
<sections>
<catalog><!-- first part of the path -->
<groups>
<frontend><!-- second part of the path -->
<fields>
<list_mode><!-- third part of the path -->
<show_in_website>0</show_in_website><!-- this will override the core value -->
<show_in_store>0</show_in_store><!-- this will override the core value -->
</list_mode>
</fields>
</frontend>
</groups>
</catalog>
</sections>
</config>
Ahora supongamos que desea agregar un nuevo campo llamado custom
en la misma sección de configuración. Ahora el xml anterior se convierte
<?xml version="1.0"?>
<config>
<sections>
<catalog><!-- first part of the path -->
<groups>
<frontend><!-- second part of the path -->
<fields>
<list_mode><!-- third part of the path -->
<show_in_website>0</show_in_website><!-- this will override the core value -->
<show_in_store>0</show_in_store><!-- this will override the core value -->
</list_mode>
<custom translate="label"><!-- your new field -->
<label>Custom</label>
<frontend_type>text</frontend_type>
<sort_order>1000</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</custom>
</fields>
</frontend>
</groups>
</catalog>
</sections>
</config>
No sé si hay un método para eliminar algún campo de la configuración usando este método. Lo busqué pero no encontré nada.