Настройка модуля Фильтр

Тема в разделе "Общие вопросы", создана пользователем spews, 5 дек 2014.

  1. 007

    007 Новичок

    Сообщения:
    1
    Симпатии:
    0
    Щастья. здоровля и успехов в личной жизни!
     
  2. Dinara08

    Dinara08 Новичок

    Сообщения:
    5
    Симпатии:
    0
    Куда именно ставить помогите,а)
     
  3. Dinara08

    Dinara08 Новичок

    Сообщения:
    5
    Симпатии:
    0
    у вас все получилось? как для несведущего сделать?
     
  4. Elex34

    Elex34 Пользователь

    Сообщения:
    32
    Симпатии:
    1
    Это автозаполнение просто жесть. У меня в фильтре около 80 параметров, нужно каждый выбирать. Как Ускорить процесс подключения фильтров в категорию без автозаполнения?
     
  5. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    Купить любой платный фильтр.
     
  6. КСЕНА

    КСЕНА Новичок

    Сообщения:
    3
    Симпатии:
    0
    Тут кто то уже спрашивал, как сделать, чтоб фильтры писались не в столбик, а в строчку или ещё лучше в несколько столбиков (например 3 мне хватит). Ответ был единственный, поставить фильтр наверх или низ страницы. Он у меня так и стоит, более того, я его переместила по совету хорошего дяди здесь ниже названия категории, но вот со стилями у меня почему то не получается, пыталась чего то менять в bootstrap.min.css, не говоря уже об stylesheet.css. ничего не получается, кое что из дизайна изменила прямо в шаблоне фильтра в div вписывала style. Но превратить колонку в строку не удаётся((( Помогите, кто знает, пжл.
     
  7. КСЕНА

    КСЕНА Новичок

    Сообщения:
    3
    Симпатии:
    0
    УПС!! Пока писала, думала и нашла ответ, оставляю и вопрос, и ответ, может кому пригодится. В шаблон фильтра к <div class="list-group-item"> добавила style="column-count:2; column-width:150px; height:100px;" Вышло 2 колонки с соответствующим размером. Добавила в шаблон, потому что вопрос с файлами стилей остаётся не решённым((( там чего то не правится, хотя кеши чищу
     
  8. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Не забудьте проверить в мобильной версии!
     
  9. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    Править как минимум только шаблон фильтра и стили. Попробуйте добавить стили
    Код:
    div[id^="filter-group"] .checkbox {
        display: inline;
    }
    А лучше покажите сайт.. сейчас придумаем ))
     
  10. marshall

    marshall Пользователь

    Сообщения:
    51
    Симпатии:
    0
    Ребят как 1500 товаров быстро добавить в фильтр? Допустим по цвету)) в ручную напряг ппц
     
  11. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Для автомата нужна какая то объективная логика, допустим в названии есть цвет или в атрибутах, можно также исходя из цветового диапазона картинки получить цвета.
     
    Последнее редактирование: 12 дек 2018
  12. linkfor

    linkfor Новичок

    Сообщения:
    3
    Симпатии:
    1
    Фильтр на главной появился, но при изменении языка вместо англоязычной версии главной страницы переходит на англоязычную версию страницы категории с фильтром. Как можно исправить? Спасибо.
     
  13. Ravilr

    Ravilr Специалист

    Сообщения:
    3.884
    Симпатии:
    1.065
    Переделать логику редиректа при смене языка. Ответ зависит от многих факторов втч и версии движка.
     
  14. linkfor

    linkfor Новичок

    Сообщения:
    3
    Симпатии:
    1
    Это я понимаю. И скорее всего это просто, если понимаешь php, но я очень поверхностно знаком, поэтому надеюсь сэкономить время, спросив на форуме.
    Код:
    <?php
    // *    @source        See SOURCE.txt for source and other copyright.
    // *    @license    GNU General Public License version 3; see LICENSE.txt
    
    class ControllerCommonLanguage extends Controller {
        public function index() {
            $this->load->language('common/language');
    
            $data['action'] = $this->url->link('common/language/language', '', $this->request->server['HTTPS']);
    
            $data['code'] = $this->session->data['language'];
    
            $this->load->model('localisation/language');
    
            $data['languages'] = array();
    
            $results = $this->model_localisation_language->getLanguages();
    
            foreach ($results as $result) {
                if ($result['status']) {
                    $data['languages'][] = array(
                        'name' => $result['name'],
                        'code' => $result['code']
                    );
                }
            }
    
    
    
            if (!isset($this->request->get['route'])) {
    
                if($this->config->get('config_seo_pro')){
                    $redirect_data = ['route' => 'common/home', 'url' => '', 'protocol' => $this->request->server['HTTPS']];
                    $data['redirect'] = base64_encode(json_encode($redirect_data));
                } else {
                    $data['redirect'] = $this->url->link('common/home');
                };
                
            } else {
                $url_data = $this->request->get;
    
                unset($url_data['_route_']);
    
                $route = $url_data['route'];
    
                unset($url_data['route']);
    
                $url = '';
    
                if ($url_data) {
                    $url = '&' . urldecode(http_build_query($url_data, '', '&'));
                }
                
                if($this->config->get('config_seo_pro')){
                    $redirect_data = ['route' => $route, 'url' => $url, 'protocol' => $this->request->server['HTTPS']];
                    $data['redirect'] = base64_encode(json_encode($redirect_data));
                } else {
                    $data['redirect'] = $this->url->link($route, $url, $this->request->server['HTTPS']);
                };
                
            }
            // Отдельный twig смены языка для главной
    if (!isset($this->request->get['route']) || isset($this->request->get['route']) && $this->request->get['route'] == 'common/home') {
                return $this->load->view('common/language_home', $data);
                    
    //??? присвоить  переменной адрес главной, чтобы при смене языка на главной с подключенным фильтром товаров, на главной не перебрасывало на страницу категории
                
                
    //???            $url = $this->url->link('common/home');           
    //               
                    
                    
                    } else {
    //
            return $this->load->view('common/language', $data);
        }
        }
        public function language() {
            if($this->config->get('config_seo_pro'))
                $this->seo_language();
                
            if (isset($this->request->post['code'])) {
                $this->session->data['language'] = $this->request->post['code'];
            }
            
            if (isset($this->request->post['code'])) {
                $this->session->data['language'] = $this->request->post['code'];
            }
            
            
            if (isset($this->request->post['redirect'])) {
                $this->response->redirect($this->request->post['redirect']);
            } else {
                $this->response->redirect($this->url->link('common/home'));
            }
        }
        
        private function seo_language() {
            if (isset($this->request->post['code'])) {
                $this->session->data['language'] = $this->request->post['code'];
                $languages = $this->model_localisation_language->getLanguages();
                if (isset($languages[$this->request->post['code']])) {
                    $this->config->set('config_language_id', $languages[$this->request->post['code']]['language_id']);   
                }
            }
    
            if (isset($this->request->post['redirect'])) {
                $redirect = $this->request->post['redirect'];
                $redirect_data = json_decode(base64_decode($redirect), true);
                extract($redirect_data);
                if(isset($route)&& isset($url) && isset($protocol)) {
                    $redirect_url = $this->url->link($route, $url, $protocol);
                } else {
                    $redirect_url = $this->url->link('common/home');
                }
                $this->response->redirect($redirect_url);
            } else {
                $this->response->redirect($this->url->link('common/home'));
            }
            
        }
            
    }
    
    Внизу в макет главной страницы вставлен фильтр товаров с кодом:
    Код:
    <?php
    class ControllerExtensionModuleFilter extends Controller {
        public function index() {
            if (isset($this->request->get['path'])) {
                $parts = explode('_', (string)$this->request->get['path']);
            } else {
        //        $parts = array();
        //    }
        //
        //    $category_id = end($parts);
            
                $parts = array();
                $this->request->get['path'] = '59';
            }
           $category_id = 59;
         //
        
        
            $this->load->model('catalog/category');
    
            $category_info = $this->model_catalog_category->getCategory($category_id);
    
            if ($category_info) {
                $this->load->language('extension/module/filter');
    
                $url = '';
    
                if (isset($this->request->get['sort'])) {
                    $url .= '&sort=' . $this->request->get['sort'];
                }
    
                if (isset($this->request->get['order'])) {
                    $url .= '&order=' . $this->request->get['order'];
                }
    
                if (isset($this->request->get['limit'])) {
                    $url .= '&limit=' . $this->request->get['limit'];
                }
    
                $data['action'] = str_replace('&amp;', '&', $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url));
    
                if (isset($this->request->get['filter'])) {
                    $data['filter_category'] = explode(',', $this->request->get['filter']);
                } else {
                    $data['filter_category'] = array();
                }
    
                $this->load->model('catalog/product');
    
                $data['filter_groups'] = array();
    
                $filter_groups = $this->model_catalog_category->getCategoryFilters($category_id);
    
                if ($filter_groups) {
                    foreach ($filter_groups as $filter_group) {
                        $childen_data = array();
    
                        foreach ($filter_group['filter'] as $filter) {
                            $filter_data = array(
                                'filter_category_id' => $category_id,
                                'filter_filter'      => $filter['filter_id']
                            );
    
                            $childen_data[] = array(
                                'filter_id' => $filter['filter_id'],
                                'name'      => $filter['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : '')
                            );
                        }
    
                        $data['filter_groups'][] = array(
                            'filter_group_id' => $filter_group['filter_group_id'],
                            'name'            => $filter_group['name'],
                            'filter'          => $childen_data
                        );
                    }
    
                    return $this->load->view('extension/module/filter', $data);
                }
            }
        }
        
    }
    

    Версия ocStore 3.0.2.0
     
  15. Ravilr

    Ravilr Специалист

    Сообщения:
    3.884
    Симпатии:
    1.065
    Скорей всего, проще тут \catalog\controller\common\language.php

    перед
    Код:
    return $this->load->view('common/language', $data);
    вставить что то подобное
    PHP:
            if (isset($this->request->get['path'])) {
                if (
    $this->request->get['path'] == 20 ) {
                    
    $data['redirect'] = $this->url->link('common/home');
                }
            }
    но тут нужно учесть, что если сменить язык в категории 20, то редирект пойдет на главную.
     
  16. linkfor

    linkfor Новичок

    Сообщения:
    3
    Симпатии:
    1
    Спасибо за ответ, но не заработало.

    Если кому понадобится, то победил это так:
    в \catalog\controller\common\language.php добавил строку
    Код:
    private function seo_language() {
    
    
            if (isset($this->request->post['code'])) {
                $this->session->data['language'] = $this->request->post['code'];
                $languages = $this->model_localisation_language->getLanguages();
                if (isset($languages[$this->request->post['code']])) {
                    $this->config->set('config_language_id', $languages[$this->request->post['code']]['language_id']); 
                }
            }
            if (isset($this->request->post['redirect'])) {
                $redirect = $this->request->post['redirect'];
                $redirect_data = json_decode(base64_decode($redirect), true);
                extract($redirect_data);
      
                if(isset($route)&& isset($url) && isset($protocol)) {
    //строка чтобы  при смене языка на главной (с подключенным фильтром товаров на главной) не перебрасывало на страницу категории         
                if ($url == '&path=20' && $route == 'common/home')    {$url = '';}
    //строка чтобы при смене языка на главной (с подключенным фильтром товаров на главной) не перебрасывало на страницу категории   
           
                    $redirect_url = $this->url->link($route, $url, $protocol);
                } else {
                    $redirect_url = $this->url->link('common/home');
                }
                $this->response->redirect($redirect_url);
            } else {
                $this->response->redirect($this->url->link('common/home'));
            }
          
        }
          
    }
     
    Ravilr нравится это.