Это автозаполнение просто жесть. У меня в фильтре около 80 параметров, нужно каждый выбирать. Как Ускорить процесс подключения фильтров в категорию без автозаполнения?
Тут кто то уже спрашивал, как сделать, чтоб фильтры писались не в столбик, а в строчку или ещё лучше в несколько столбиков (например 3 мне хватит). Ответ был единственный, поставить фильтр наверх или низ страницы. Он у меня так и стоит, более того, я его переместила по совету хорошего дяди здесь ниже названия категории, но вот со стилями у меня почему то не получается, пыталась чего то менять в bootstrap.min.css, не говоря уже об stylesheet.css. ничего не получается, кое что из дизайна изменила прямо в шаблоне фильтра в div вписывала style. Но превратить колонку в строку не удаётся((( Помогите, кто знает, пжл.
УПС!! Пока писала, думала и нашла ответ, оставляю и вопрос, и ответ, может кому пригодится. В шаблон фильтра к <div class="list-group-item"> добавила style="column-count:2; column-width:150px; height:100px;" Вышло 2 колонки с соответствующим размером. Добавила в шаблон, потому что вопрос с файлами стилей остаётся не решённым((( там чего то не правится, хотя кеши чищу
Править как минимум только шаблон фильтра и стили. Попробуйте добавить стили Код: div[id^="filter-group"] .checkbox { display: inline; } А лучше покажите сайт.. сейчас придумаем ))
Для автомата нужна какая то объективная логика, допустим в названии есть цвет или в атрибутах, можно также исходя из цветового диапазона картинки получить цвета.
Фильтр на главной появился, но при изменении языка вместо англоязычной версии главной страницы переходит на англоязычную версию страницы категории с фильтром. Как можно исправить? Спасибо.
Это я понимаю. И скорее всего это просто, если понимаешь php, но я очень поверхностно знаком, поэтому надеюсь сэкономить время, спросив на форуме. Спойлер: language.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')); } } } Внизу в макет главной страницы вставлен фильтр товаров с кодом: Спойлер: filter.php Код: <?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('&', '&', $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
Скорей всего, проще тут \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, то редирект пойдет на главную.
Спасибо за ответ, но не заработало. Если кому понадобится, то победил это так: в \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')); } } }