Opencart在过滤器模块中添加第3级类别

时间:2013-01-02 06:45:05

标签: add categories opencart

我正在使用模块进行产品过滤, 在我的管理员后端,我只能为第一级和第二级类别设置过滤器。我也需要添加第三级别类别。 下面提到的是我的模块控制器文件,

<?php
class ControllerModuleSuperCategoryMenu extends Controller {
    private $error = array(); 

    public function index() {   

        $this->data['current_version']='2.0.7';
        //remove cache files
        $this->cache->delete('product_filters');
        $this->cache->delete('attribute_filters');

        $this->load->language('module/supercategorymenu');

        $this->document->setTitle($this->language->get('heading_title'));

        $this->load->model('setting/setting');

        if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {        

        $this->model_setting_setting->editSetting('supercategorymenu', $this->request->post);       
        $this->session->data['success'] = $this->language->get('text_success');

        $this->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'));
        }

        $this->data['heading_title'] = $this->language->get('heading_title');
        $this->data['tab_general'] = $this->language->get('tab_general');
        $this->data['tab_settings'] = $this->language->get('tab_settings');
        $this->data['tab_layouts'] = $this->language->get('tab_layouts');
        $this->data['tab_contact'] = $this->language->get('tab_contact');

        $this->data['entry_all_values']                     = $this->language->get('entry_all_values');
        $this->data['entry_list_number']                    = $this->language->get('entry_list_number');
        $this->data['entry_list_number_explanation']        = $this->language->get('entry_list_number_explanation');
        $this->data['entry_pricerange']                     = $this->language->get('entry_pricerange');
        $this->data['entry_pricerange_explanation']         = $this->language->get('entry_pricerange_explanation');
        $this->data['entry_set_vat']                        = $this->language->get('entry_set_vat');
        $this->data['entry_set_vat_explanation']            = $this->language->get('entry_set_vat_explanation');
        $this->data['default_vat_price_range']              = $this->language->get('default_vat_price_range');
        $this->data['default_vat_price_range_explanation']  = $this->language->get('default_vat_price_range_explanation');
        $this->data['entry_manufacturer']                   = $this->language->get('entry_manufacturer');
        $this->data['entry_manufacturer_explanation']       = $this->language->get('entry_manufacturer_explanation');
        $this->data['text_yes']                             = $this->language->get('text_yes');
        $this->data['text_no']                              = $this->language->get('text_no');
        $this->data['entry_count']                          = $this->language->get('entry_count');
        $this->data['entry_count_explanation']              = $this->language->get('entry_count_explanation');
        $this->data['entry_ocscroll']                       = $this->language->get('entry_ocscroll');
        $this->data['entry_ocscroll_explanation']           = $this->language->get('entry_ocscroll_explanation');
        $this->data['entry_nofollow']                       = $this->language->get('entry_nofollow');
        $this->data['entry_nofollow_explanation']           = $this->language->get('entry_nofollow_explanation');
        $this->data['entry_track_google']                   = $this->language->get('entry_track_google');
        $this->data['entry_track_google_explanation']       = $this->language->get('entry_track_google_explanation');
        $this->data['entry_ajax']                           = $this->language->get('entry_ajax');
        $this->data['entry_ajax_explanation']               = $this->language->get('entry_ajax_explanation');
        $this->data['entry_order']                          = $this->language->get('entry_order');
        $this->data['entry_order_explanation']              = $this->language->get('entry_order_explanation');




        $this->data['text_enabled'] = $this->language->get('text_enabled');
        $this->data['text_disabled'] = $this->language->get('text_disabled');
        $this->data['text_content_top'] = $this->language->get('text_content_top');
        $this->data['text_content_bottom'] = $this->language->get('text_content_bottom');       
        $this->data['text_column_left'] = $this->language->get('text_column_left');
        $this->data['text_column_right'] = $this->language->get('text_column_right');

        $this->data['entry_layout'] = $this->language->get('entry_layout');
        $this->data['entry_position'] = $this->language->get('entry_position');
        $this->data['entry_status'] = $this->language->get('entry_status');
        $this->data['entry_sort_order'] = $this->language->get('entry_sort_order');

        $this->data['entry_value'] = $this->language->get('entry_value');
        $this->data['entry_separator'] = $this->language->get('entry_separator');
        $this->data['entry_examples'] = $this->language->get('entry_examples');
        $this->data['entry_separator_explanation'] = $this->language->get('entry_separator_explanation');
        $this->data['entry_values_explanation'] = $this->language->get('entry_values_explanation');
        $this->data['text_none'] = $this->language->get('text_none');

        $this->data['button_save'] = $this->language->get('button_save');
        $this->data['button_cancel'] = $this->language->get('button_cancel');
        $this->data['button_add_module'] = $this->language->get('button_add_module');
        $this->data['button_remove'] = $this->language->get('button_remove');

        if (isset($this->error['warning'])) {
            $this->data['error_warning'] = $this->error['warning'];
        } else {
            $this->data['error_warning'] = '';
        }

        $this->data['breadcrumbs'] = array();

        $this->data['breadcrumbs'][] = array(
            'text'      => $this->language->get('text_home'),
            'href'      => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'),
            'separator' => false
        );

        $this->data['breadcrumbs'][] = array(
            'text'      => $this->language->get('text_module'),
            'href'      => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'),
            'separator' => ' :: '
        );

        $this->data['breadcrumbs'][] = array(
            'text'      => $this->language->get('heading_title'),
            'href'      => $this->url->link('module/supercategorymenu', 'token=' . $this->session->data['token'], 'SSL'),
            'separator' => ' :: '
        );

        $this->data['action'] = $this->url->link('module/supercategorymenu', 'token=' . $this->session->data['token'], 'SSL');
        $this->data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');
        $this->data['settings'] = $this->url->link('module/supercategorymenu/settings', 'token=' . $this->session->data['token'], 'SSL');



        $this->data['modules'] = array();

        if (isset($this->request->post['supercategorymenu_module'])) {
            $this->data['modules'] = $this->request->post['supercategorymenu_module'];
        } elseif ($this->config->get('supercategorymenu_module')) { 
            $this->data['modules'] = $this->config->get('supercategorymenu_module');
        }   


        $this->data['settings'] = array();

        if (isset($this->request->post['supercategorymenu_settings'])) {
            $this->data['settings'] = $this->request->post['supercategorymenu_settings'];
        } elseif ($this->config->get('supercategorymenu_settings')) { 
            $this->data['settings'] = $this->config->get('supercategorymenu_settings');
        }           


        if (isset($this->data['settings']['track_google'])){
            $this->data['settings_trackgoogle']=$this->data['settings']['track_google'];

        }else{
            $this->data['settings_trackgoogle']=0;
        }



        if (isset($this->data['settings']['list_number'])){
            $this->data['settings_listnumber']=$this->data['settings']['list_number'];

        }else{
            $this->data['settings_listnumber']=7;
        }

        if (isset($this->data['settings']['nofollow'])){
            $this->data['settings_nofollow']=$this->data['settings']['nofollow'];

        }else{
            $this->data['settings_nofollow']=1;
        }

        if (isset($this->data['settings']['ajax'])){
            $this->data['settings_ajax']=$this->data['settings']['ajax'];

        }else{
            $this->data['settings_ajax']=0;
        }
        if (isset($this->data['settings']['order'])){
            $this->data['settings_order']=$this->data['settings']['order'];

        }else{
            $this->data['settings_order']="OH";
        }


        if (isset($this->data['settings']['ocscroll'])){
            $this->data['settings_ocscroll']=$this->data['settings']['ocscroll'];

        }else{
            $this->data['settings_ocscroll']=0;
        }


        if (isset($this->data['settings']['countp'])){
            $this->data['settings_countp']=$this->data['settings']['countp'];

        }else{
            $this->data['settings_countp']=1;
        }

        if (isset($this->data['settings']['pricerange'])){
            $this->data['settings_pricerange']=$this->data['settings']['pricerange'];

        }else{
            $this->data['settings_pricerange']=1;
        }

        if (isset($this->data['settings']['setvat'])){
            $this->data['settings_setvat']=$this->data['settings']['setvat'];

        }else{
            $this->data['settings_setvat']=1;
        }
        if (isset($this->data['settings']['manufacturer'])){
            $this->data['settings_manufacturer']=$this->data['settings']['manufacturer'];

        }else{
            $this->data['settings_manufacturer']=1;
        }
        if (isset($this->data['settings']['tax_class_id'])){
            $this->data['tax_class_id']=$this->data['settings']['tax_class_id'];

        }else{
            $this->data['tax_class_id']="";
        }

        $this->load->model('localisation/tax_class');

        $this->data['tax_classes'] = $this->model_localisation_tax_class->getTaxClasses();


        $this->load->model('module/supercategorymenu');

        $this->data['categories'] = array();

        $categories = $this->model_module_supercategorymenu->getCategories(0);

        foreach ($categories as $category) {

            if (isset($this->request->post['VALORES_'.$category['category_id'].''])) {
                $this->data['category_attributes'][$category['category_id']]= $this->request->post['VALORES_'.$category['category_id'].''];
            } else {
                $this->data['category_attributes'][$category['category_id']] = $this->config->get('VALORES_'.$category['category_id'].'');
            }   

            $children_data = array();

            $children = $this->model_module_supercategorymenu->getCategories($category['category_id']);

            foreach ($children as $child) {


            if (isset($this->request->post['VALORES_'.$child['category_id'].''])) {
                $this->data['category_attributes'][$child['category_id']]= $this->request->post['VALORES_'.$child['category_id'].''];
            } else {
                $this->data['category_attributes'][$child['category_id']] = $this->config->get('VALORES_'.$child['category_id'].'');
            }   

            $results = $this->model_module_supercategorymenu->getCategoryAttributes($child['category_id']);                 

            $attribute_data = array();

            foreach ($results as $result) {

                        if (isset($this->data['category_attributes'][$child['category_id']]['attributes'][$result['attribute_id']])){
                            $attribute_checked=true;
                            $attribute_seperator=$this->data['category_attributes'][$child['category_id']]['attributes'][$result['attribute_id']]['separator']; 
                        }else{
                            $attribute_checked=false;
                            $attribute_seperator="no";
                        }

                $attribute_values=array();
                $attribute_values = $this->model_module_supercategorymenu->getAttributeValues($result['attribute_id']); 

                //foreach ($res as $attribute_value){
                    //$attribute_values[key($res)]=$attribute_value;

                //}

                $attribute_data[] = array(
                        'attribute_id'  => $result['attribute_id'],
                        'name'          => $result['name'],
                        'checked'       => $attribute_checked,
                        'separator'     => $attribute_seperator,
                        'attribute_values'=> $attribute_values
                    );                  


                }

                $children_data[] = array(
                    'category_id' => $child['category_id'],
                    'name'        => $child['name'],
                    'attributes'  => $attribute_data
                );                  
            }


            $results = $this->model_module_supercategorymenu->getCategoryAttributes($category['category_id']);  
            $attribute_data = array();

                foreach ($results as $result) {

                        if (isset($this->data['category_attributes'][$category['category_id']]['attributes'][$result['attribute_id']])){
                            $attribute_checked=true;
                            $attribute_seperator=$this->data['category_attributes'][$category['category_id']]['attributes'][$result['attribute_id']]['separator'];  
                        }else{
                            $attribute_checked=false;
                            $attribute_seperator="no";
                        }
                $attribute_values_child=array();
                $attribute_values_child = $this->model_module_supercategorymenu->getAttributeValues($result['attribute_id']);   

                //foreach ($res_child as $attribute_value_child){
                    //$attribute_values_child[key($res)]=$attribute_value_child;

                //}


                $attribute_data[] = array(
                        'attribute_id'  => $result['attribute_id'],
                        'name'          => $result['name'],
                        'checked'       => $attribute_checked,
                        'separator'     => $attribute_seperator,
                        'attribute_values'=> $attribute_values_child
                    );                  


                }


            $this->data['categories'][] = array(
                'category_id' => $category['category_id'],
                'name'        => $category['name'],
                'children'    => $children_data,
                'attributes'  => $attribute_data,
                //'valores_bd'  => $this->data['category_attributes'][$category['category_id']]


            );
        }


        $this->load->model('setting/extension');

        if(in_array("ocscroll",$this->model_setting_extension->getInstalled('module'))){
            $this->data['ocscroll']=true;
        }else{
           $this->data['ocscroll']=false;
        }

            $ch = curl_init();
             // Now set some options (most are optional)
             // Set URL to download
             curl_setopt($ch, CURLOPT_URL,"http://opencart.tictachome.com/version/version.xml");
            // Include header in result? (0 = yes, 1 = no)
             curl_setopt($ch, CURLOPT_HEADER, 0);
            // Should cURL return or print out the data? (true = return, false = print)
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            // Timeout in seconds
             curl_setopt($ch, CURLOPT_TIMEOUT, 10);
            // Download the given URL, and return output
            $output = curl_exec($ch);
            // Close the cURL resource, and free system resources
            curl_close($ch);
            $analizador=simplexml_load_string($output,null);

            $this->data['version']['version']=$analizador->children()->version;
            $this->data['version']['whats_new']=$analizador->children()->whats_new;

        foreach($analizador->children()->other_modules as $other_modules){

            $this->data['version']['modules'][]=array(

                    'name'      =>$other_modules->name,
                    'version'   =>$other_modules->version,
                    'url'       =>$other_modules->url,
                    'manual'    =>$other_modules->manual,
                    'price'     =>$other_modules->price,
                    'resume'    =>$other_modules->resume,
                );

            }




        $this->load->model('localisation/language');

        $this->data['languages'] = $this->model_localisation_language->getLanguages();

        $this->load->model('design/layout');

        $this->data['layouts'] = $this->model_design_layout->getLayouts();

        $this->template = 'module/supercategorymenu.tpl';
        $this->children = array(
            'common/header',
            'common/footer'
        );

        $this->response->setOutput($this->render());
    }

    private function validate() {
        if (!$this->user->hasPermission('modify', 'module/supercategorymenu')) {
            $this->error['warning'] = $this->language->get('error_permission');
        }

        if (!$this->error) {
            return true;
        } else {
            return false;
        }   
    }
}
?>

有没有人知道如何添加第3级别类别。

请分享您的建议。

谢谢,

0 个答案:

没有答案