Adding custom configuration section to existing tab
-
16-10-2019 - |
Question
Synopsis
I have created a basic local module that is designed to listen to an observer , which it does perfectly fine. However I wish the observer method to pull out some configured settings which changes the behaviour of it's task.
I want to add a new section under the Catalog
tab; I found this question.
I do not want to create a new tab, instead I do want a new section under the existing Catalog tab (similarly to Catalog > Inventory).
Current behaviour
Currently inside the control panel I click Catalog > Catalog
, low and behold inside this tab is a group called Section Name Under Catalog Tab. I also don't see my group Group Name.
Expected behaviour
I click Catalog > Section Name Under Catalog Tab
, inside this tab is a group called Group Name with my enable/disable field.
- As per Image example 1 - I'd expect a section called Section Name Under Catalog Tab;
- As per Image example 2 - I'd expect this to expand into a view with my group Group Name;
- Finally the group should contain the form present in Image exmaple 2.
Code snippets
local/Vendor/Module/etc/adminhtml.xml
<?xml version="1.0" ?>
<config>
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<mymodule translate="title" module="mymodule">
<title>Section inside Catalog</title>
</mymodule>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</config>
local/Vendor/Module/etc/system.xml
<?xml version="1.0" ?>
<config>
<sections>
<mymodule translate="label" module="mymodule">
<label>Section Name Under Catalog Tab</label>
<tab>catalog</tab>
<frontend_type>text</frontend_type>
<sort_order>0</sort_order>
<show_in_default>0</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<groups>
<category_options translate="label">
<label>Group Name</label>
<frontend_type>text</frontend_type>
<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>
<fields>
<active translate="label">
<label>Enabled</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_enabledisable</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>
</active>
</fields>
</category_options>
</groups>
</mymodule>
</sections>
</config>
Solution
Conclusion
I've solved this and there were a couple of confusing aspects. Some of the XML tag names were incorrect and the module reference too was invalid.
In case someone else gets the same issue, I will wrap this up.
app/etc/modules/Myvendor_Mymodule.xml contains:
<?xml version="1.0" ?>
<config>
<modules>
<Myvendor_Mymodule>
<active>true</active>
<codePool>local</codePool>
<depends>
<!-- Added this dependency to ensure it's loaded first -->
<Mage_Catalog />
</depends>
</Myvendor_Mymodule>
</modules>
</config>
code/local/Myvendor/Mymodule/etc/config.xml contains:
<?xml version="1.0" ?>
<config>
<modules>
<Myvendor_Mymodule>
<version>1.0.0</version>
</Myvendor_Mymodule>
</modules>
<global>
<models>
<myvendor_mymodule>
<class>Myvendor_Mymodule_Model</class>
</myvendor_mymodule>
</models>
<helpers>
<myvendor_mymodule>
<class>Myvendor_Mymodule_Model</class>
</myvendor_mymodule>
</helpers>
</global>
</config>
local/Myvendor/Mymodule/etc/system.xml contains:
<?xml version="1.0" ?>
<config>
<sections>
<!-- I don't know if this is necessary but prefixed with the parent name -->
<catalog_mymodule translate="label" module="mymodule">
<label>My Section (inside Catalog)</label>
<!-- appears to define the catalog tab as the parent -->
<tab>catalog</tab>
<frontend_type>text</frontend_type>
<sort_order>0</sort_order>
<show_in_default>0</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<groups>
<!-- This group should appear inside it's own space. -->
<mymoule_group translate="label">
<label>Group Name</label>
<frontend_type>text</frontend_type>
<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>
<fields>
<active translate="label">
<label>Enabled</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_enabledisable</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>
</active>
</fields>
</mymoule_group>
</groups>
</catalog_mymodule>
</sections>
</config>
local/Myvendor/Mymodule/etc/adminhtml.xml contains:
<?xml version="1.0" ?>
<config>
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<catalog_mymodule translate="title" module="mymodule">
<title>ACL Name for my section</title>
</catalog_mymodule>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</config>