配置文件进行编辑

1.以下是system.xml文件

<config>
    <sections>
        <shopcore translate="label" module="shopcore">
            <class>separator-top</class>
            <label>商城/专区设置</label>
            <tab>sales</tab>
            <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>0</show_in_store>
            <groups>
                <restriction translate="label" module="shopcore">
                    <label>限购逻辑</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>0</show_in_store>
                    <fields>
                        <blocked_period_mapping translate="label">
                            <label><![CDATA[限制时间段]]></label>
                            <comment><![CDATA[
                                    限制类型填数值:壹风暴=100,蜂速购=110,蜜好货=120,蚂实惠=130<br/>
                                    时间段格式:07:00-09:00,20:00-22:00<br/>
                                    时间段请勿跨越子夜,请不要填写诸如23:00-03:00的时间段
                            ]]></comment>
                            <frontend_model>hpservice/adminhtml_system_config_form_field_json</frontend_model>-----------------------这里调的文件中是在Black里面
                            <frontend_json_structure>map</frontend_json_structure> <!-- map or list -->
                            <frontend_json_key_label>限制类型</frontend_json_key_label>
                            <frontend_json_value_label>时间段</frontend_json_value_label>
                            <sort_order>300</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </blocked_period_mapping>
                    </fields>
                </restriction>

              </groups>
        </shopcore>

     </sections>
</config>

2.hpservice/adminhtml_system_config_form_field_json文件的内容如下:

class Harapartners_HpService_Block_Adminhtml_System_Config_Form_Field_Json extends Mage_Adminhtml_Block_System_Config_Form_Field {
    
    /*
     * 特殊类型的system config,将列表内容变成JSON保存
     * 缺省支持两种类型:
     * >> list结构,只保存值value,不保存key,没有值时缺省为[]
     * >> map结构,保存键key与键值value,没有值时缺省为{}
     */
    protected function _toHtml() {
        $element = $this->getData('element');
        $elementFieldConfig = $element->getFieldConfig();
        $elementJsonConfig = array(
                'structure'        => (string)$elementFieldConfig->frontend_json_structure,
                'key_label'        => (string)$elementFieldConfig->frontend_json_key_label,
                'value_label'    => (string)$elementFieldConfig->frontend_json_value_label,
        );
        
        // 键值从已知常量中选取中选取
        $rendererClassName = (string)$elementFieldConfig->frontend_json_key_option_renderer;
        if(!empty($rendererClassName)){
            $optionRenderer = Mage::getModel($rendererClassName);
            foreach($optionRenderer->getAllOptions() as $optionValue => $optionLabel){
                $keyOptionHtml .= "<option value='{$optionValue}'>{$optionLabel}</option>";
            }
            $elementJsonConfig['key_option_html'] = $keyOptionHtml;
        }
        
        $elementData = $this->_prepareElementData($element, $elementJsonConfig);
        $elementJsonConfig = json_encode($elementJsonConfig);

        $htmlContent = <<< HTML_CONTENT
<input type="hidden" id="{$element->getHtmlId()}" name="{$element->getName()}" value="{$element->getEscapedValue()}" {$this->serialize($element->getHtmlAttributes())}/>
<div id="{$element->getHtmlId()}_json_config_widget" class="json_config_widget_container"></div>
<script type="text/javascript">
    var {$element->getHtmlId()} = new JsonConfigWidget();
    {$element->getHtmlId()}.init("{$element->getHtmlId()}", $elementData, $elementJsonConfig);
</script>
HTML_CONTENT;
        return $htmlContent;
    }
    
    protected function _prepareElementData($element){
        $elementFieldConfig = $element->getFieldConfig();
        $elementJsonConfig = array(
                'structure'        => (string)$elementFieldConfig->frontend_json_structure,
                'key_label'        => (string)$elementFieldConfig->frontend_json_key_label,
                'value_label'    => (string)$elementFieldConfig->frontend_json_value_label,
        );
        $elementData = (string)$element->getValue();
        
        //Try to decode to validate the data, if not validate, use empty placeholders
        $jsonValidateData = json_decode(trim($element->getValue()), true);
        if(!$jsonValidateData){
            if(isset($elementJsonConfig['structure']) && $elementJsonConfig['structure'] == 'list'){
                $elementData = "[]";
            }else{
                $elementData = "{}";
            }
        }
        
        return $elementData;
    }

    protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element){
        $this->addData(array(
            'element' => $element
        ));
        return $this->_toHtml();
    }
    
}

3.调取这里的值的方法是:

$prizePoolConfig = json_decode(Mage::getStoreConfig('shopcore/restriction_product_number/blocked_day_mapping'), 1);//因为调取的数据为json数据所以转成数组.

posted @ 2017-01-12 19:03  思风雨  阅读(252)  评论(0编辑  收藏  举报