Работаю с OC v.2.1.0.1 выяснилось, что фильтр не работает по нескольким параметрам (если выбрано несколько). файл filter.tpl Код | <div class="panel panel-default"> <div class="panel-heading"><?php echo $heading_title; ?></div> <div class="list-group"> <?php foreach ($filter_groups as $filter_group) { ?> <a class="list-group-item"><?php echo $filter_group['name']; ?></a> <div class="list-group-item"> <div id="filter-group<?php echo $filter_group['filter_group_id']; ?>"> <?php foreach ($filter_group['filter'] as $filter) { ?> <div class="checkbox"> <label> <?php if (in_array($filter['filter_id'], $filter_category)) { ?> <input type="checkbox" name="filter[]" value="<?php echo $filter['filter_id']; ?>" checked="checked" /> <?php echo $filter['name']; ?> <?php } else { ?> <input type="checkbox" name="filter[]" value="<?php echo $filter['filter_id']; ?>" /> <?php echo $filter['name']; ?> <?php } ?> </label> </div> <?php } ?> </div> </div> <?php } ?> </div> <div class="panel-footer text-right"> <button type="button" id="button-filter" class="btn btn-primary"><?php echo $button_filter; ?></button> </div> </div> <script type="text/javascript"><!-- $('#button-filter').on('click', function() { filter = [];
$('input[name^=\'filter\']:checked').each(function(element) { filter.push(this.value); });
location = '<?php echo $action; ?>&filter=' + filter.join(','); }); //--></script>
|
файл filter.php (controller/module/) Код | <?php class ControllerModuleFilter 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);
$this->load->model('catalog/category');
$category_info = $this->model_catalog_category->getCategory($category_id);
if ($category_info) { $this->load->language('module/filter');
$data['heading_title'] = $this->language->get('heading_title');
$data['button_filter'] = $this->language->get('button_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 ); }
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/filter.tpl')) { return $this->load->view($this->config->get('config_template') . '/template/module/filter.tpl', $data); } else { return $this->load->view('default/template/module/filter.tpl', $data); } } } } }
|
При указании того или иного параметра, фильтр выводит информацию только по первому(цифре) - filter=48,58.. т.е. получается фильтр выдал мне информацию по запросу filter=48, а не по filter=48,58 Где и что нужно дописать.. неделю уже найти косяк не могу, если нужны еще какие-то файлы, коды с радостью предоставлю
|