Pour les system.xml
fichiers, cela ne fonctionne pas comme pour les fichiers de classe. Les system.xml
fichiers sont collectés à partir des modules actifs de Magento. Le simple fait d'en copier un dans le local
dossier ne signifie pas qu'il se trouve dans un module, car le fichier de déclaration de module indique toujours que le module appartient au core
pool de codes.
Si vous souhaitez ajouter de nouveaux champs à une section ou remplacer certains des champs dont vous avez besoin pour créer votre propre module.
Voici un exemple de la façon dont vous pouvez ajouter un nouveau champ dans la section Catalog->Frontend
et comment vous pouvez en remplacer un dans la même section.
Disons que votre module est appelé Easylife_Catalog
.
Vous aurez besoin des fichiers suivants:
app/etc/modules/Easylife_Catalog.xml
- le fichier de déclaration
<?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
- le fichier de configuration
<?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
- système-> fichier de configuration
Supposons que vous souhaitiez modifier le List Mode
champ pour qu'il soit disponible uniquement au niveau global (pas de site Web ni de vue de magasin). Le chemin de configuration est catalog/frontend/list_mode
. Ensuite, system.xml
cela ressemblera à ceci:
<?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>
Supposons maintenant que vous souhaitiez ajouter un nouveau champ appelé custom
dans la même section de configuration. Maintenant, le xml ci-dessus devient
<?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>
Je ne sais pas s'il existe une méthode pour supprimer certains champs de la configuration à l'aide de cette méthode. Je l'ai cherché mais je n'ai rien trouvé.
app/etc/modules
) sont chargés, puis toutes les<depends>
balises sont analysées et une hiérarchie de modules est établie. puis les modules sont chargés dans cet ordre.