In my custom module I have added a tab to the admin configuration section to manage service providers for an external service. I have creted the following group in my system.xml of my module:
<section>
<mymodule>
<groups name="providers">
<provider1>
<label>Provider 1</label>
<sort_order>100</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<name>
<label>Name</label>
<frontend_type>text</frontend_type>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</name>
</fields>
</provider1>
<provider2>
<label>Provider 2</label>
<sort_order>320</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<name>
<label>Name</label>
<frontend_type>text</frontend_type>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</name>
</fields>
</provider2>
</groups>
</mymodule>
</section>
This results in my config using the following path:
mymodule/provider1/name or mymodule/provider2/name
What I would like to do is use the following path:
mymodule/providers/provider1/name etc
I thought that i might be able to just wrap the providers in a node bu tthis doesn't work. I appreciate that I am trying to massage the structure of the xml in order to get please the path, but in doing so it will help me to target just the providers which I need to do for the options used on drop-down select.
1 Answer 1
This is the right way to write system.xml
<?xml version="1.0"?>
<config>
<tabs>
<catalog translate="label" module="catalog">
<label>Catalog</label>
<sort_order>200</sort_order>
</catalog>
</tabs>
<sections>
<catalog translate="label" module="catalog">
<class>separator-top</class>
<label>Catalog</label>
<tab>catalog</tab>
<frontend_type>text</frontend_type>
<sort_order>40</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<groups>
<frontend translate="label">
<label>Frontend</label>
<frontend_type>text</frontend_type>
<sort_order>100</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<list_mode translate="label">
<label>List Mode</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_catalog_listMode</source_model>
<sort_order>1</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</list_mode>
</fields>
</frontend>
</groups>
</catalog>
</sections>
</config>
You need to define tab, also use sections instead of section. You can get idea from default system.xml files.
Hope this help!
-
in my example I stripped out the lines of the xml which were not related to my question. Your example doesn't address the issue at hand - how to wrap the group inside a <providers> nodeAlan A– Alan A2018年06月05日 10:45:33 +00:00Commented Jun 5, 2018 at 10:45