This tutorial shows how to add a custom select list in configuration settings of a custom Magento module.
Suppose, your module’s namespace is YourNamespace and your module’s name is YourModule. And, you want to add a selection list of Brands that contains mobile brand names like Samsung, Sony, Apple, etc.
Here is the code to add in your module’s system.xml file.
Note: I have set Group Name as ‘yourgroupname’, Field Name as ‘yourfield’. You can change that to your desired name.
<sections>
...
...
<groups>
<yourgroupname>
<fields>
<yourfield translate="label comment">
<label>Select Brands</label>
<comment>Custom Selection List</comment>
<frontend_type>select</frontend_type>
<source_model>yourmodule/system_config_source_brands</source_model>
<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>
</yourfield>
</fields>
</yourgroupname>
</groups>
</sections>
From the above system.xml code, you can see that the source model is defined as “yourmodule/system_config_source_brands“. So, you have to create a new model class in your module.
Class name will be YourNamespace_YourModule_Model_System_Config_Source_Brands and the file location will be YourNamespace/YourModule/Model/System/Config/Source/Brands.php.
Here is the class code:
<?php
/**
* Used in creating options config value selection
*
*/
class YourNamespace_YourModule_Model_System_Config_Source_Brands
{
/**
* Options getter
*
* @return array
*/
public function toOptionArray()
{
return array(
array('value' => '', 'label'=>Mage::helper('yourmodule')->__('None')),
array('value' => 1, 'label'=>Mage::helper('yourmodule')->__('Samsung')),
array('value' => 2, 'label'=>Mage::helper('yourmodule')->__('Sony')),
array('value' => 3, 'label'=>Mage::helper('yourmodule')->__('Apple')),
);
}
/**
* Get options in "key-value" format
*
* @return array
*/
public function toArray()
{
return array(
'' => Mage::helper('yourmodule')->__('None'),
1 => Mage::helper('yourmodule')->__('Samsung'),
2 => Mage::helper('yourmodule')->__('Sony'),
3 => Mage::helper('yourmodule')->__('Apple'),
);
}
}
Make sure that model class is defined in your module’s config.xml file.
<global>
<models>
<yourmodule>
<class>YourNamespace_YourModule_Model</class>
...
...
</yourmodule>
...
...
</models>
...
...
</global>
Hope this helps. Thanks.