Select oder Multiselect mit eigenen Optionen im Magento Admin Panel
Kategorie: MagentoVerfasst: 3. Juli 2011 von Matthias
Ziel ist es, im Magento Admin Panel ein Select oder Multiselect mit frei definierbaren Optionen zur Verfügung zu stellen. Die Optionen können beispielsweise noch über ein Resource Model aus der Datenbank geladen werden.
De typische Verzeichnisstruktur eines Magento Moduls
magento
`-- app
`-- code
|-- community
|-- core
`-- local
`-- Mbtec
|-- Test
|-- etc
| |-- config.xml
| `-- system.xml
|-- Helper
| `-- Data.php
`-- Model
`-- Adminhtml
`-- System
`-- Config
`-- Source
`-- Options.php
Die Modulkonfiguration Datei etc/config.xml<?xml version="1.0"?> <config> <modules> <mbtec_test> <version>0.0.1</version> </mbtec_test> </modules> <global> <models> <mbtec_test> <class>Mbtec_Test_Model</class> </mbtec_test> </models> <helpers> <mbtec_test> <class>Mbtec_Test_Helper</class> </mbtec_test> </helpers> </global> <adminhtml> <acl> <resources> <admin> <children> <system> <children> <config> <children> <mbtec_test> <title>Test</title> </mbtec_test> </children> </config> </children> </system> </children> </admin> </resources> </acl> </adminhtml> </config>Die Systemkonfiguration mit der die Selects zum Admin Panel hinzugefügt werden.
Datei etc/system.xml<?xml version="1.0"?> <config> <tabs> <mbtec translate="label" module="mbtec_test"> <label>Mbtec</label> <sort_order>450</sort_order> </mbtec> </tabs> <sections> <mbtec_test translate="label" module="mbtec_test"> <label>Test</label> <tab>mbtec</tab> <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> <groups> <settings translate="label"> <label>Settings</label> <frontend_type>text</frontend_type> <sort_order>100</sort_order> <show_in_default>1</show_in_default> <show_in_website>0</show_in_website> <show_in_store>0</show_in_store> <fields> <optionselect translate="label,comment"> <label>Options</label> <comment> <![CDATA[Please select one option.]]> </comment> <frontend_type>select</frontend_type> <source_model> mbtec_test/adminhtml_system_config_source_options </source_model> <sort_order>10</sort_order> <show_in_default>1</show_in_default> <show_in_website>0</show_in_website> <show_in_store>0</show_in_store> </optionselect> <optionmultiselect translate="label,comment"> <label>Options</label> <comment> <![CDATA[Please select one option.]]> </comment> <frontend_type>multiselect</frontend_type> <source_model> mbtec_test/adminhtml_system_config_source_options </source_model> <sort_order>20</sort_order> <show_in_default>1</show_in_default> <show_in_website>0</show_in_website> <show_in_store>0</show_in_store> </optionmultiselect> </fields> </settings> </groups> </mbtec_test> </sections> </config>Der leere Helper-Stub welcher für die Translations notwendig ist.
Datei Helper/Data.php<?php class Mbtec_Test_Helper_Data extends Mage_Core_Helper_Abstract { }Die Datenquelle für die Selects.
Datei: Models/Adminhtml/System/Config/Source/Options<?php class Mbtec_Test_Model_Adminhtml_System_Config_Source_Options { /** * Options getter * * @return array */ public function toOptionArray() { $helper = Mage::helper('mbtec_test'); return array( array( 'value' => 'foo', 'label'=> $helper->__('Foo') ), array( 'value' => 'bar', 'label'=> $helper->__('Bar') ), array( 'value' => 'baz', 'label'=> $helper->__('Baz') ) ); } }Die Konfigurationswerte können dann ausgelesen werden mit
$option = Mage::getStoreConfig( 'mbtec_test/settings/optionselect' ); $multioption = Mage::getStoreConfig( 'mbtec_test/settings/optionmultiselect' );Hinweis: Cache löschen nicht vergessen
![]()
Tags: Admin Panel, Konfiguration, Magento, Multiselect, Select
