opencart 1.5 how to add module in a header

后端 未结 8 1528
不思量自难忘°
不思量自难忘° 2021-02-14 21:58

Please some one tell me how can I position modules like slider or banner in header or how can we define additional regions for the modules.

8条回答
  •  野性不改
    2021-02-14 22:55

    Well, I am working on it.

    Firstly, you should add a new position in the admin page. Which means you should change three files and add some lines into each.

    For example, if you want to add slideshow into header, you should add a new position in

    $this->data['text_header'] = $this->language->get('text_header'); // in admin/controller/slideshow.php
    

    ////////////////////////////////////////////////

    $_['text_header']         = 'Header'; // in admin/language/slideshow.php
    

    ////////////////////////////////////////////////

     // in admin/view/slideshow.tpl
                
                
                
                
    

    Then a new position for slideshow has been defined. and you can choose it in the admin page.

    After that, you should add those codes in catalog/view/header.tpl

     
        
        
    

    Then, in the catalog/controller/header.php, add some codes like content_top.php does: $layout_id = 1;

    $module_data = array();
    
    $this->load->model('setting/extension');
    
    $extensions = $this->model_setting_extension->getExtensions('module');      
    
    foreach ($extensions as $extension) {
        $modules = $this->config->get($extension['code'] . '_module');
    
        if ($modules) {
            foreach ($modules as $module) {
                if ($module['layout_id'] == $layout_id && $module['position'] == 'header' && $module['status']) {
                    $module_data[] = array(
                        'code'       => $extension['code'],
                        'setting'    => $module,
                        'sort_order' => $module['sort_order']
                    );              
                }
            }
        }
    }
    
    $sort_order = array(); 
    
    foreach ($module_data as $key => $value) {
        $sort_order[$key] = $value['sort_order'];
    }
    
    array_multisort($sort_order, SORT_ASC, $module_data);
    
    $this->data['modules'] = array();
    
    foreach ($module_data as $module) {
        $module = $this->getChild('module/' . $module['code'], $module['setting']);
    
        if ($module) {
            $this->data['modules'][] = $module;
        }
    }
    
    
    if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/header.tpl')) {
        $this->template = $this->config->get('config_template') . '/template/common/header.tpl';
    } else {
        $this->template = 'default/template/common/header.tpl';
    }
    
    $this->render();
    

    Then all done.

    The only problem for this code is the slideshow cannot display as a slideshow but a static picture or pictures.

    Wish you could solve it out and reply to me. My question post: Opencart developement: change slideshow's position

提交回复
热议问题