WellChuck Опубліковано: 12 січня 2017 Share Опубліковано: 12 січня 2017 Уважаемые гуру, очень нуждаюсь в вашей помощи! Собственно возникла проблема с работоспособность seo url в Opencart 2.3.0.2. Точнее сами ссылки работают, проблема заключается в том, что перестает работать пагинация, сортировка и лимиты товаров на страницу категории. В одной из тем дали ссылку на такое решение. Вот только проблем с появлением ?page={page}, у меня нет... Ссылки генерируются, но не прожимаются :mellow: <a href="javascript:void(0);" onclick="oclayerednavigationajax.filter("http://site/kabel?page=2")">2</a> Куда копать? Что делать? :mellow: 1 Надіслати Поділитися на інших сайтах More sharing options...
Dotrox Опубліковано: 12 січня 2017 Share Опубліковано: 12 січня 2017 <a href="javascript:void(0);" onclick="oclayerednavigationajax.filter("http://site/kabel?page=2")">2</a> Ну, если у вас ссылки выглядят так, то SEO Url тут не причём. У вас эту ссылку должен обрабатывать js и загружать контент аяксом. Посмотрите в консоли браузера, что происходит после клика на такую ссылку и, возможно, там есть ошибки ещё до клика. Надіслати Поділитися на інших сайтах More sharing options...
WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Ну, если у вас ссылки выглядят так, то SEO Url тут не причём. У вас эту ссылку должен обрабатывать js и загружать контент аяксом. Посмотрите в консоли браузера, что происходит после клика на такую ссылку и, возможно, там есть ошибки ещё до клика. Пробовал разобраться со скриптом, не осилил :( $(document).ready(function() { oclayerednavigationajax.productViewChange(); oclayerednavigationajax.paginationChangeAction(); }); var oclayerednavigationajax = { /* Filter action */ 'filter' : function(filter_url) { var old_route = 'route=product/category'; var new_route = 'route=extension/module/oclayerednavigation/category'; if(filter_url.search(old_route) != -1) { filter_url = filter_url.replace(old_route, new_route); } if(filter_url.search(new_route) != -1) { $.ajax({ url : filter_url, type : 'get', beforeSend : function () { $('.layered-navigation-block').show(); $('.ajax-loader').show(); }, success : function(json) { $('.filter-url').val(json['filter_action']); $('.price-url').val(json['price_action']); $('.custom-category').html(json['result_html']); $('.layered').html(json['layered_html']); oclayerednavigationajax.paginationChangeAction(); oclayerednavigationajax.productViewChange(); $('.layered-navigation-block').hide(); $('.ajax-loader').hide(); } }); } }, /* Use again and update ajaxComplete from common.js */ 'productViewChange' : function() { // Product List $('#list-view').click(function() { $('#content .product-layout > .clearfix').remove(); $('#content .product-layout').attr('class', 'product-layout product-list col-xs-12'); localStorage.setItem('display', 'list'); }); // Product Grid $('#grid-view').click(function() { $('#content .product-layout > .clearfix').remove(); // What a shame bootstrap does not take into account dynamically loaded columns cols = $('#column-right, #column-left').length; if (cols == 2) { $('#content .product-layout').attr('class', 'product-layout product-grid col-lg-6 col-md-6 col-sm-12 col-xs-12'); } else if (cols == 1) { $('#content .product-layout').attr('class', 'product-layout product-grid col-lg-4 col-md-4 col-sm-6 col-xs-12'); } else { $('#content .product-layout').attr('class', 'product-layout product-grid col-lg-3 col-md-3 col-sm-6 col-xs-12'); } localStorage.setItem('display', 'grid'); }); if (localStorage.getItem('display') == 'list') { $('#list-view').trigger('click'); } else { $('#grid-view').trigger('click'); } }, /* Modify pagination links */ paginationChangeAction: function () { $('.custom-category .pagination a').each(function () { var href = $(this).attr('href'); $(this).attr('onclick', 'oclayerednavigationajax.filter("'+ href +'")'); $(this).attr('href', 'javascript:void(0);'); }); } }; Надіслати Поділитися на інших сайтах More sharing options...
Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 А дело таки в ЧПУ. Скрипт ищет не ЧПУ роут и не находя его просто ничего не делает. Но тут правками в этом js не отделаться, нужно ещё как-то передать в скрипт id текущей категории. Покажите файл /extension/module/oclayerednavigation/category.php. Кстати, этот js код у вас в отдельном js файле или в теле шаблона (если да, то какого)? Надіслати Поділитися на інших сайтах More sharing options...
WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 А дело таки в ЧПУ. Скрипт ищет не ЧПУ роут и не находя его просто ничего не делает. Но тут правками в этом js не отделаться, нужно ещё как-то передать в скрипт id текущей категории. Покажите файл /extension/module/oclayerednavigation/category.php. Кстати, этот js код у вас в отдельном js файле или в теле шаблона (если да, то какого)? js в отдельном файле <?php class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('extension/module/category'); $data['heading_title'] = $this->language->get('heading_title'); if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } if (isset($parts[0])) { $data['category_id'] = $parts[0]; } else { $data['category_id'] = 0; } if (isset($parts[1])) { $data['child_id'] = $parts[1]; } else { $data['child_id'] = 0; } $this->load->model('catalog/category'); $this->load->model('catalog/product'); $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { $children_data = array(); if ($category['category_id'] == $data['category_id']) { $children = $this->model_catalog_category->getCategories($category['category_id']); foreach($children as $child) { $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true); $children_data[] = array( 'category_id' => $child['category_id'], 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } } $filter_data = array( 'filter_category_id' => $category['category_id'], 'filter_sub_category' => true ); $data['categories'][] = array( 'category_id' => $category['category_id'], 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $children_data, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); } return $this->load->view('extension/module/category', $data); } } Надіслати Поділитися на інших сайтах More sharing options...
markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 .... Читайте внимательно что вам пишут Покажите файл /extension/module/oclayerednavigation/category.php. А вы что "показали"? Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 (змінено) oclayerednavigation - в папке модуля не нашел catalog/controller/extension/module/category.php <?php class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('extension/module/category'); $data['heading_title'] = $this->language->get('heading_title'); if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } if (isset($parts[0])) { $data['category_id'] = $parts[0]; } else { $data['category_id'] = 0; } if (isset($parts[1])) { $data['child_id'] = $parts[1]; } else { $data['child_id'] = 0; } $this->load->model('catalog/category'); $this->load->model('catalog/product'); $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { $children_data = array(); if ($category['category_id'] == $data['category_id']) { $children = $this->model_catalog_category->getCategories($category['category_id']); foreach($children as $child) { $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true); $children_data[] = array( 'category_id' => $child['category_id'], 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } } $filter_data = array( 'filter_category_id' => $category['category_id'], 'filter_sub_category' => true ); $data['categories'][] = array( 'category_id' => $category['category_id'], 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $children_data, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); } return $this->load->view('extension/module/category', $data); } } Змінено 16 січня 2017 користувачем WellChuck Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 oclayerednavigation - в папке модуля не нашел ... Ну как это нету, если в JS идет к нему обращение судя по коду 'route=extension/module/oclayerednavigation/category'; Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Ну catalog/controller/extension/module/ - полный путь, дальше папок правда нету... :mellow: category.php лежал в папке module Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ну catalog/controller/extension/module/ - полный путь, дальше папок правда нету... :mellow: category.php лежал в папке module Да причем здесь папка! extension/module/oclayerednavigation.php А category просто его метод, который вызывает JS Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 (змінено) Да причем здесь папка! extension/module/oclayerednavigation.php А category просто его метод, который вызывает JS Прошу прощения <?php class ControllerExtensionModuleOclayerednavigation extends Controller { /** * Load layered navigation block */ 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); $data = array(); if ($category_info) { $this->load->language('extension/module/oclayerednavigation'); $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->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url); $data['clear_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id); if (isset($this->request->get['filter'])) { $data['filter_category'] = explode(',', $this->request->get['filter']); } else { $data['filter_category'] = array(); } $this->load->model('catalog/product'); // Min price and Max price of product collection /* Begin */ $min_price = 10000000; // Set the large number $max_price = 0; // Set the small number $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id ); $results = $this->model_catalog_product->getProducts($filter_data); foreach($results as $result) { $price = (float) $result['price']; if($price < $min_price) { $min_price = $price; } if($price > $max_price) { $max_price = $price; } } $rate = (float) $this->currency->getValue($this->session->data['currency']); $data['min_price'] = ceil($min_price * $rate); $data['max_price'] = round($max_price * $rate); $data['currency_symbol'] = $this->currency->getSymbolLeft($this->session->data['currency']); /* End */ $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) . ')' : ''), 'e_name' => $filter['name'] ); } $data['filter_groups'][] = array( 'filter_group_id' => $filter_group['filter_group_id'], 'name' => $filter_group['name'], 'filter' => $childen_data ); } } } if($data['filter_groups']) { return $this->load->view('extension/module/oclayerednavigation/oclayerednavigation.tpl', $data); } } /** * Load Layer after filter */ public function layer() { 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('extension/module/oclayerednavigation'); $data['clear_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id); if (isset($this->request->get['filter'])) { $data['filter_category'] = explode(',', $this->request->get['filter']); } else { $data['filter_category'] = array(); } $this->load->model('catalog/product'); // Min price and Max price of product collection /* Begin */ $min_price = 10000000; // Set the large number $max_price = 0; // Set the small number $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id ); $rate = (float) $this->currency->getValue($this->session->data['currency']); $results = $this->model_catalog_product->getProducts($filter_data); foreach($results as $result) { $price = (float) $result['price']; if($price < $min_price) { $min_price = $price; } if($price > $max_price) { $max_price = $price; } } $data['min_price'] = ceil($min_price * $rate); $data['max_price'] = round($max_price * $rate); if (isset($this->request->get['price'])) { $price_data = $this->request->get['price']; } else { $price_data = ''; } if (isset($this->request->get['price'])) { $price_data = explode(',', $price_data); $data['current_min_price'] = $price_data[0]; $data['current_max_price'] = $price_data[1]; } else { $data['current_min_price'] = $data['min_price']; $data['current_max_price'] = $data['max_price']; } $data['currency_symbol'] = $this->currency->getSymbolLeft($this->session->data['currency']); /* End */ $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) . ')' : ''), 'e_name' => $filter['name'] ); } $data['filter_groups'][] = array( 'filter_group_id' => $filter_group['filter_group_id'], 'name' => $filter_group['name'], 'filter' => $childen_data ); } } } if($data['filter_groups']) { return $this->load->view('extension/module/oclayerednavigation/oclayerednavigationfilter.tpl', $data); } } /** * Load category view */ public function category() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $json = array(); if (isset($this->request->get['price'])) { $price_data = $this->request->get['price']; } else { $price_data = ''; } if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = $this->request->get['limit']; } else { $limit = $this->config->get($this->config->get('config_theme') . '_product_limit'); } if (isset($this->request->get['path'])) { $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']; } if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['text_sale'] = $this->language->get('text_sale'); $data['text_new'] = $this->language->get('text_new'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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['price'])) { $url .= '&price=' . $this->request->get['price']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $result['category_id'] . $url ); } $data['products'] = array(); $rate = (float) $this->currency->getValue($this->session->data['currency']); // Min and Max Price $filter_price = array(); if (isset($this->request->get['price'])) { $price_data = explode(',', $price_data); $filter_price['min_price'] = ceil($price_data[0] / $rate - 1); $filter_price['max_price'] = round($price_data[1] / $rate); } // var_dump($filter_price);die; $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'filter_price' => $filter_price, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); $data['new_products'] = array(); $filter_new_data = array( 'sort' => 'p.date_added', 'order' => 'DESC', 'start' => 0, 'limit' => 10 ); $new_results = $this->model_catalog_product->getProducts($filter_new_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $is_new = false; if ($new_results) { foreach($new_results as $new_r) { if($result['product_id'] == $new_r['product_id']) { $is_new = true; } } } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'is_new' => $is_new, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.sort_order&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=pd.name&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=pd.name&order=DESC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.price&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.price&order=DESC' . $url ); if ($this->config->get('config_review_status')) { $data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=rating&order=DESC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=rating&order=ASC' . $url ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.model&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.model&order=DESC' . $url ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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['price'])) { $url .= '&price=' . $this->request->get['price']; } $data['limits'] = array(); $limits = array_unique(array($this->config->get($this->config->get('config_theme') . '_product_limit'), 25, 50, 75, 100)); sort($limits); foreach($limits as $value) { $data['limits'][] = array( 'text' => $value, 'value' => $value, 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url . '&limit=' . $value ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } $pagination = new Pagination(); $pagination->total = $product_total; $pagination->page = $page; $pagination->limit = $limit; $pagination->url = $this->config->get('config_url') . 'index.php?route=product/category&path=' . $category_id . $url . '&page={page}'; $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit)); if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), true), 'next'); } $data['sort'] = $sort; $data['order'] = $order; $data['limit'] = $limit; $json['result_html'] = $this->load->view('extension/module/oclayerednavigation/occategoryfilter.tpl', $data); $url = ''; if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } 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']; } $json['filter_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $json['price_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url); $json['layered_html'] = $this->layer(); } else { $json['result_html'] = "No No No"; } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } Змінено 16 січня 2017 користувачем WellChuck Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 oclayerednavigation - в папке модуля не нашел Если нет /extension/module/oclayerednavigation/category.php, то должен быть /extension/module/oclayerednavigation.php, потому что тогда, действительно, category - это не файл, а метод в oclayerednavigation.php. Если и oclayerednavigation.php нет, то пытаться что-то править в js бессмысленно - без этого файла ничего всё равно работать не будет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Я "...пу и плачу" :|Это где такого говнокода вы "набрали" foreach($limits as $value) {$data['limits'][] = array('text' => $value,'value' => $value,'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url . '&limit=' . $value);}...$pagination->url = $this->config->get('config_url') . 'index.php?route=product/category&path=' . $category_id . $url . '&page={page}' мАмА дАрАгАя А как же https ?! Т.е. подгружаться под https "мы" не будем stratup.php: if (!$query->num_rows) { $this->config->set('config_url', HTTP_SERVER); $this->config->set('config_ssl', HTTPS_SERVER); } Короче - отправьте для начала этот говномодуль в мусорку Где вы его нашли? Что за модуль? $json['result_html'] = "No No No"; :? :roll: Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я "...пу и плачу" :| Это где такого говнокода вы "набрали" мАмА дАрАгАя А как же https ?! Т.е. подгружаться под https "мы" не будем Короче - отправьте для начала этот говномодуль в мусорку Где вы его нашли? Что за модуль? шло с темой :mellow: Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 шло с темой :mellow: Как обычно куча говномодулей в придачу к г..ну в красивой упаковке Требуйте назад деньги Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 О да... тема изобилует просто говнокодом http: //saharafashion3.demo.towerthemes.com/index.php?route=module/ocquickview/seoview&ourl=http://saharafashion3.demo.towerthemes.com/gallery/fashion-3 А учитывая что google прекрасно уже понимает json на странице (не через ajax замечу) - "то это залёт солдат" - а точнее дубль товара Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo isset($path) ? $path : ''; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Змінено 16 січня 2017 користувачем Dotrox 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Лучше бы у меня была такая проблема, чем "No No No"... Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo $path; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Ситуация изменилась Пагинация теперь работает, но только после выбора фильтра. При переходе по страницам URL в адресной строке не меняется Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей То-есть даже пытаться не стоит? Может вы можете что-то в качестве альтернативы подкинуть? Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) И к сожалению не работает :( Логично. Вот так должно всё работать: if(filter_url.search(new_route) == -1) { var query = [new_route]; if(typeof($('#content').attr('data-path')) != 'undefined'){ query.push('path=' + $('#content').attr('data-path')); } var i = filter_url.indexOf('?'); if(i > -1){ query.push(filter_url.slice(i+1)); } filter_url = 'index.php?' + query.join('&'); } А код модуля действительно местами не очень. Ну и, за отсутствие поддержки ЧПУ действительно можно было бы от автора потребовать либо исправлений, либо компенсации. Змінено 16 січня 2017 користувачем Dotrox 2 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пісочниця Seo URL - Opencart 2.3.0.2 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 (змінено) oclayerednavigation - в папке модуля не нашел catalog/controller/extension/module/category.php <?php class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('extension/module/category'); $data['heading_title'] = $this->language->get('heading_title'); if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } if (isset($parts[0])) { $data['category_id'] = $parts[0]; } else { $data['category_id'] = 0; } if (isset($parts[1])) { $data['child_id'] = $parts[1]; } else { $data['child_id'] = 0; } $this->load->model('catalog/category'); $this->load->model('catalog/product'); $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { $children_data = array(); if ($category['category_id'] == $data['category_id']) { $children = $this->model_catalog_category->getCategories($category['category_id']); foreach($children as $child) { $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true); $children_data[] = array( 'category_id' => $child['category_id'], 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } } $filter_data = array( 'filter_category_id' => $category['category_id'], 'filter_sub_category' => true ); $data['categories'][] = array( 'category_id' => $category['category_id'], 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $children_data, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); } return $this->load->view('extension/module/category', $data); } } Змінено 16 січня 2017 користувачем WellChuck Надіслати Поділитися на інших сайтах More sharing options...
markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 oclayerednavigation - в папке модуля не нашел ... Ну как это нету, если в JS идет к нему обращение судя по коду 'route=extension/module/oclayerednavigation/category'; Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Ну catalog/controller/extension/module/ - полный путь, дальше папок правда нету... :mellow: category.php лежал в папке module Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ну catalog/controller/extension/module/ - полный путь, дальше папок правда нету... :mellow: category.php лежал в папке module Да причем здесь папка! extension/module/oclayerednavigation.php А category просто его метод, который вызывает JS Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 (змінено) Да причем здесь папка! extension/module/oclayerednavigation.php А category просто его метод, который вызывает JS Прошу прощения <?php class ControllerExtensionModuleOclayerednavigation extends Controller { /** * Load layered navigation block */ 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); $data = array(); if ($category_info) { $this->load->language('extension/module/oclayerednavigation'); $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->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url); $data['clear_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id); if (isset($this->request->get['filter'])) { $data['filter_category'] = explode(',', $this->request->get['filter']); } else { $data['filter_category'] = array(); } $this->load->model('catalog/product'); // Min price and Max price of product collection /* Begin */ $min_price = 10000000; // Set the large number $max_price = 0; // Set the small number $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id ); $results = $this->model_catalog_product->getProducts($filter_data); foreach($results as $result) { $price = (float) $result['price']; if($price < $min_price) { $min_price = $price; } if($price > $max_price) { $max_price = $price; } } $rate = (float) $this->currency->getValue($this->session->data['currency']); $data['min_price'] = ceil($min_price * $rate); $data['max_price'] = round($max_price * $rate); $data['currency_symbol'] = $this->currency->getSymbolLeft($this->session->data['currency']); /* End */ $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) . ')' : ''), 'e_name' => $filter['name'] ); } $data['filter_groups'][] = array( 'filter_group_id' => $filter_group['filter_group_id'], 'name' => $filter_group['name'], 'filter' => $childen_data ); } } } if($data['filter_groups']) { return $this->load->view('extension/module/oclayerednavigation/oclayerednavigation.tpl', $data); } } /** * Load Layer after filter */ public function layer() { 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('extension/module/oclayerednavigation'); $data['clear_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id); if (isset($this->request->get['filter'])) { $data['filter_category'] = explode(',', $this->request->get['filter']); } else { $data['filter_category'] = array(); } $this->load->model('catalog/product'); // Min price and Max price of product collection /* Begin */ $min_price = 10000000; // Set the large number $max_price = 0; // Set the small number $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id ); $rate = (float) $this->currency->getValue($this->session->data['currency']); $results = $this->model_catalog_product->getProducts($filter_data); foreach($results as $result) { $price = (float) $result['price']; if($price < $min_price) { $min_price = $price; } if($price > $max_price) { $max_price = $price; } } $data['min_price'] = ceil($min_price * $rate); $data['max_price'] = round($max_price * $rate); if (isset($this->request->get['price'])) { $price_data = $this->request->get['price']; } else { $price_data = ''; } if (isset($this->request->get['price'])) { $price_data = explode(',', $price_data); $data['current_min_price'] = $price_data[0]; $data['current_max_price'] = $price_data[1]; } else { $data['current_min_price'] = $data['min_price']; $data['current_max_price'] = $data['max_price']; } $data['currency_symbol'] = $this->currency->getSymbolLeft($this->session->data['currency']); /* End */ $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) . ')' : ''), 'e_name' => $filter['name'] ); } $data['filter_groups'][] = array( 'filter_group_id' => $filter_group['filter_group_id'], 'name' => $filter_group['name'], 'filter' => $childen_data ); } } } if($data['filter_groups']) { return $this->load->view('extension/module/oclayerednavigation/oclayerednavigationfilter.tpl', $data); } } /** * Load category view */ public function category() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $json = array(); if (isset($this->request->get['price'])) { $price_data = $this->request->get['price']; } else { $price_data = ''; } if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = $this->request->get['limit']; } else { $limit = $this->config->get($this->config->get('config_theme') . '_product_limit'); } if (isset($this->request->get['path'])) { $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']; } if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['text_sale'] = $this->language->get('text_sale'); $data['text_new'] = $this->language->get('text_new'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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['price'])) { $url .= '&price=' . $this->request->get['price']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $result['category_id'] . $url ); } $data['products'] = array(); $rate = (float) $this->currency->getValue($this->session->data['currency']); // Min and Max Price $filter_price = array(); if (isset($this->request->get['price'])) { $price_data = explode(',', $price_data); $filter_price['min_price'] = ceil($price_data[0] / $rate - 1); $filter_price['max_price'] = round($price_data[1] / $rate); } // var_dump($filter_price);die; $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'filter_price' => $filter_price, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); $data['new_products'] = array(); $filter_new_data = array( 'sort' => 'p.date_added', 'order' => 'DESC', 'start' => 0, 'limit' => 10 ); $new_results = $this->model_catalog_product->getProducts($filter_new_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $is_new = false; if ($new_results) { foreach($new_results as $new_r) { if($result['product_id'] == $new_r['product_id']) { $is_new = true; } } } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'is_new' => $is_new, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.sort_order&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=pd.name&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=pd.name&order=DESC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.price&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.price&order=DESC' . $url ); if ($this->config->get('config_review_status')) { $data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=rating&order=DESC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=rating&order=ASC' . $url ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.model&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.model&order=DESC' . $url ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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['price'])) { $url .= '&price=' . $this->request->get['price']; } $data['limits'] = array(); $limits = array_unique(array($this->config->get($this->config->get('config_theme') . '_product_limit'), 25, 50, 75, 100)); sort($limits); foreach($limits as $value) { $data['limits'][] = array( 'text' => $value, 'value' => $value, 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url . '&limit=' . $value ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } $pagination = new Pagination(); $pagination->total = $product_total; $pagination->page = $page; $pagination->limit = $limit; $pagination->url = $this->config->get('config_url') . 'index.php?route=product/category&path=' . $category_id . $url . '&page={page}'; $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit)); if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), true), 'next'); } $data['sort'] = $sort; $data['order'] = $order; $data['limit'] = $limit; $json['result_html'] = $this->load->view('extension/module/oclayerednavigation/occategoryfilter.tpl', $data); $url = ''; if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } 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']; } $json['filter_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $json['price_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url); $json['layered_html'] = $this->layer(); } else { $json['result_html'] = "No No No"; } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } Змінено 16 січня 2017 користувачем WellChuck Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 oclayerednavigation - в папке модуля не нашел Если нет /extension/module/oclayerednavigation/category.php, то должен быть /extension/module/oclayerednavigation.php, потому что тогда, действительно, category - это не файл, а метод в oclayerednavigation.php. Если и oclayerednavigation.php нет, то пытаться что-то править в js бессмысленно - без этого файла ничего всё равно работать не будет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Я "...пу и плачу" :|Это где такого говнокода вы "набрали" foreach($limits as $value) {$data['limits'][] = array('text' => $value,'value' => $value,'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url . '&limit=' . $value);}...$pagination->url = $this->config->get('config_url') . 'index.php?route=product/category&path=' . $category_id . $url . '&page={page}' мАмА дАрАгАя А как же https ?! Т.е. подгружаться под https "мы" не будем stratup.php: if (!$query->num_rows) { $this->config->set('config_url', HTTP_SERVER); $this->config->set('config_ssl', HTTPS_SERVER); } Короче - отправьте для начала этот говномодуль в мусорку Где вы его нашли? Что за модуль? $json['result_html'] = "No No No"; :? :roll: Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я "...пу и плачу" :| Это где такого говнокода вы "набрали" мАмА дАрАгАя А как же https ?! Т.е. подгружаться под https "мы" не будем Короче - отправьте для начала этот говномодуль в мусорку Где вы его нашли? Что за модуль? шло с темой :mellow: Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 шло с темой :mellow: Как обычно куча говномодулей в придачу к г..ну в красивой упаковке Требуйте назад деньги Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 О да... тема изобилует просто говнокодом http: //saharafashion3.demo.towerthemes.com/index.php?route=module/ocquickview/seoview&ourl=http://saharafashion3.demo.towerthemes.com/gallery/fashion-3 А учитывая что google прекрасно уже понимает json на странице (не через ajax замечу) - "то это залёт солдат" - а точнее дубль товара Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo isset($path) ? $path : ''; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Змінено 16 січня 2017 користувачем Dotrox 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Лучше бы у меня была такая проблема, чем "No No No"... Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo $path; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Ситуация изменилась Пагинация теперь работает, но только после выбора фильтра. При переходе по страницам URL в адресной строке не меняется Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей То-есть даже пытаться не стоит? Может вы можете что-то в качестве альтернативы подкинуть? Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) И к сожалению не работает :( Логично. Вот так должно всё работать: if(filter_url.search(new_route) == -1) { var query = [new_route]; if(typeof($('#content').attr('data-path')) != 'undefined'){ query.push('path=' + $('#content').attr('data-path')); } var i = filter_url.indexOf('?'); if(i > -1){ query.push(filter_url.slice(i+1)); } filter_url = 'index.php?' + query.join('&'); } А код модуля действительно местами не очень. Ну и, за отсутствие поддержки ЧПУ действительно можно было бы от автора потребовать либо исправлений, либо компенсации. Змінено 16 січня 2017 користувачем Dotrox 2 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пісочниця Seo URL - Opencart 2.3.0.2 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Ну catalog/controller/extension/module/ - полный путь, дальше папок правда нету... :mellow: category.php лежал в папке module Надіслати Поділитися на інших сайтах More sharing options...
markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ну catalog/controller/extension/module/ - полный путь, дальше папок правда нету... :mellow: category.php лежал в папке module Да причем здесь папка! extension/module/oclayerednavigation.php А category просто его метод, который вызывает JS Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 (змінено) Да причем здесь папка! extension/module/oclayerednavigation.php А category просто его метод, который вызывает JS Прошу прощения <?php class ControllerExtensionModuleOclayerednavigation extends Controller { /** * Load layered navigation block */ 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); $data = array(); if ($category_info) { $this->load->language('extension/module/oclayerednavigation'); $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->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url); $data['clear_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id); if (isset($this->request->get['filter'])) { $data['filter_category'] = explode(',', $this->request->get['filter']); } else { $data['filter_category'] = array(); } $this->load->model('catalog/product'); // Min price and Max price of product collection /* Begin */ $min_price = 10000000; // Set the large number $max_price = 0; // Set the small number $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id ); $results = $this->model_catalog_product->getProducts($filter_data); foreach($results as $result) { $price = (float) $result['price']; if($price < $min_price) { $min_price = $price; } if($price > $max_price) { $max_price = $price; } } $rate = (float) $this->currency->getValue($this->session->data['currency']); $data['min_price'] = ceil($min_price * $rate); $data['max_price'] = round($max_price * $rate); $data['currency_symbol'] = $this->currency->getSymbolLeft($this->session->data['currency']); /* End */ $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) . ')' : ''), 'e_name' => $filter['name'] ); } $data['filter_groups'][] = array( 'filter_group_id' => $filter_group['filter_group_id'], 'name' => $filter_group['name'], 'filter' => $childen_data ); } } } if($data['filter_groups']) { return $this->load->view('extension/module/oclayerednavigation/oclayerednavigation.tpl', $data); } } /** * Load Layer after filter */ public function layer() { 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('extension/module/oclayerednavigation'); $data['clear_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id); if (isset($this->request->get['filter'])) { $data['filter_category'] = explode(',', $this->request->get['filter']); } else { $data['filter_category'] = array(); } $this->load->model('catalog/product'); // Min price and Max price of product collection /* Begin */ $min_price = 10000000; // Set the large number $max_price = 0; // Set the small number $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id ); $rate = (float) $this->currency->getValue($this->session->data['currency']); $results = $this->model_catalog_product->getProducts($filter_data); foreach($results as $result) { $price = (float) $result['price']; if($price < $min_price) { $min_price = $price; } if($price > $max_price) { $max_price = $price; } } $data['min_price'] = ceil($min_price * $rate); $data['max_price'] = round($max_price * $rate); if (isset($this->request->get['price'])) { $price_data = $this->request->get['price']; } else { $price_data = ''; } if (isset($this->request->get['price'])) { $price_data = explode(',', $price_data); $data['current_min_price'] = $price_data[0]; $data['current_max_price'] = $price_data[1]; } else { $data['current_min_price'] = $data['min_price']; $data['current_max_price'] = $data['max_price']; } $data['currency_symbol'] = $this->currency->getSymbolLeft($this->session->data['currency']); /* End */ $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) . ')' : ''), 'e_name' => $filter['name'] ); } $data['filter_groups'][] = array( 'filter_group_id' => $filter_group['filter_group_id'], 'name' => $filter_group['name'], 'filter' => $childen_data ); } } } if($data['filter_groups']) { return $this->load->view('extension/module/oclayerednavigation/oclayerednavigationfilter.tpl', $data); } } /** * Load category view */ public function category() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $json = array(); if (isset($this->request->get['price'])) { $price_data = $this->request->get['price']; } else { $price_data = ''; } if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = $this->request->get['limit']; } else { $limit = $this->config->get($this->config->get('config_theme') . '_product_limit'); } if (isset($this->request->get['path'])) { $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']; } if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['text_sale'] = $this->language->get('text_sale'); $data['text_new'] = $this->language->get('text_new'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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['price'])) { $url .= '&price=' . $this->request->get['price']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $result['category_id'] . $url ); } $data['products'] = array(); $rate = (float) $this->currency->getValue($this->session->data['currency']); // Min and Max Price $filter_price = array(); if (isset($this->request->get['price'])) { $price_data = explode(',', $price_data); $filter_price['min_price'] = ceil($price_data[0] / $rate - 1); $filter_price['max_price'] = round($price_data[1] / $rate); } // var_dump($filter_price);die; $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'filter_price' => $filter_price, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); $data['new_products'] = array(); $filter_new_data = array( 'sort' => 'p.date_added', 'order' => 'DESC', 'start' => 0, 'limit' => 10 ); $new_results = $this->model_catalog_product->getProducts($filter_new_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $is_new = false; if ($new_results) { foreach($new_results as $new_r) { if($result['product_id'] == $new_r['product_id']) { $is_new = true; } } } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'is_new' => $is_new, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.sort_order&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=pd.name&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=pd.name&order=DESC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.price&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.price&order=DESC' . $url ); if ($this->config->get('config_review_status')) { $data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=rating&order=DESC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=rating&order=ASC' . $url ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.model&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.model&order=DESC' . $url ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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['price'])) { $url .= '&price=' . $this->request->get['price']; } $data['limits'] = array(); $limits = array_unique(array($this->config->get($this->config->get('config_theme') . '_product_limit'), 25, 50, 75, 100)); sort($limits); foreach($limits as $value) { $data['limits'][] = array( 'text' => $value, 'value' => $value, 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url . '&limit=' . $value ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } $pagination = new Pagination(); $pagination->total = $product_total; $pagination->page = $page; $pagination->limit = $limit; $pagination->url = $this->config->get('config_url') . 'index.php?route=product/category&path=' . $category_id . $url . '&page={page}'; $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit)); if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), true), 'next'); } $data['sort'] = $sort; $data['order'] = $order; $data['limit'] = $limit; $json['result_html'] = $this->load->view('extension/module/oclayerednavigation/occategoryfilter.tpl', $data); $url = ''; if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } 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']; } $json['filter_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $json['price_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url); $json['layered_html'] = $this->layer(); } else { $json['result_html'] = "No No No"; } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } Змінено 16 січня 2017 користувачем WellChuck Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 oclayerednavigation - в папке модуля не нашел Если нет /extension/module/oclayerednavigation/category.php, то должен быть /extension/module/oclayerednavigation.php, потому что тогда, действительно, category - это не файл, а метод в oclayerednavigation.php. Если и oclayerednavigation.php нет, то пытаться что-то править в js бессмысленно - без этого файла ничего всё равно работать не будет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Я "...пу и плачу" :|Это где такого говнокода вы "набрали" foreach($limits as $value) {$data['limits'][] = array('text' => $value,'value' => $value,'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url . '&limit=' . $value);}...$pagination->url = $this->config->get('config_url') . 'index.php?route=product/category&path=' . $category_id . $url . '&page={page}' мАмА дАрАгАя А как же https ?! Т.е. подгружаться под https "мы" не будем stratup.php: if (!$query->num_rows) { $this->config->set('config_url', HTTP_SERVER); $this->config->set('config_ssl', HTTPS_SERVER); } Короче - отправьте для начала этот говномодуль в мусорку Где вы его нашли? Что за модуль? $json['result_html'] = "No No No"; :? :roll: Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я "...пу и плачу" :| Это где такого говнокода вы "набрали" мАмА дАрАгАя А как же https ?! Т.е. подгружаться под https "мы" не будем Короче - отправьте для начала этот говномодуль в мусорку Где вы его нашли? Что за модуль? шло с темой :mellow: Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 шло с темой :mellow: Как обычно куча говномодулей в придачу к г..ну в красивой упаковке Требуйте назад деньги Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 О да... тема изобилует просто говнокодом http: //saharafashion3.demo.towerthemes.com/index.php?route=module/ocquickview/seoview&ourl=http://saharafashion3.demo.towerthemes.com/gallery/fashion-3 А учитывая что google прекрасно уже понимает json на странице (не через ajax замечу) - "то это залёт солдат" - а точнее дубль товара Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo isset($path) ? $path : ''; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Змінено 16 січня 2017 користувачем Dotrox 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Лучше бы у меня была такая проблема, чем "No No No"... Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo $path; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Ситуация изменилась Пагинация теперь работает, но только после выбора фильтра. При переходе по страницам URL в адресной строке не меняется Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей То-есть даже пытаться не стоит? Может вы можете что-то в качестве альтернативы подкинуть? Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) И к сожалению не работает :( Логично. Вот так должно всё работать: if(filter_url.search(new_route) == -1) { var query = [new_route]; if(typeof($('#content').attr('data-path')) != 'undefined'){ query.push('path=' + $('#content').attr('data-path')); } var i = filter_url.indexOf('?'); if(i > -1){ query.push(filter_url.slice(i+1)); } filter_url = 'index.php?' + query.join('&'); } А код модуля действительно местами не очень. Ну и, за отсутствие поддержки ЧПУ действительно можно было бы от автора потребовать либо исправлений, либо компенсации. Змінено 16 січня 2017 користувачем Dotrox 2 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пісочниця Seo URL - Opencart 2.3.0.2 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 (змінено) Да причем здесь папка! extension/module/oclayerednavigation.php А category просто его метод, который вызывает JS Прошу прощения <?php class ControllerExtensionModuleOclayerednavigation extends Controller { /** * Load layered navigation block */ 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); $data = array(); if ($category_info) { $this->load->language('extension/module/oclayerednavigation'); $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->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url); $data['clear_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id); if (isset($this->request->get['filter'])) { $data['filter_category'] = explode(',', $this->request->get['filter']); } else { $data['filter_category'] = array(); } $this->load->model('catalog/product'); // Min price and Max price of product collection /* Begin */ $min_price = 10000000; // Set the large number $max_price = 0; // Set the small number $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id ); $results = $this->model_catalog_product->getProducts($filter_data); foreach($results as $result) { $price = (float) $result['price']; if($price < $min_price) { $min_price = $price; } if($price > $max_price) { $max_price = $price; } } $rate = (float) $this->currency->getValue($this->session->data['currency']); $data['min_price'] = ceil($min_price * $rate); $data['max_price'] = round($max_price * $rate); $data['currency_symbol'] = $this->currency->getSymbolLeft($this->session->data['currency']); /* End */ $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) . ')' : ''), 'e_name' => $filter['name'] ); } $data['filter_groups'][] = array( 'filter_group_id' => $filter_group['filter_group_id'], 'name' => $filter_group['name'], 'filter' => $childen_data ); } } } if($data['filter_groups']) { return $this->load->view('extension/module/oclayerednavigation/oclayerednavigation.tpl', $data); } } /** * Load Layer after filter */ public function layer() { 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('extension/module/oclayerednavigation'); $data['clear_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id); if (isset($this->request->get['filter'])) { $data['filter_category'] = explode(',', $this->request->get['filter']); } else { $data['filter_category'] = array(); } $this->load->model('catalog/product'); // Min price and Max price of product collection /* Begin */ $min_price = 10000000; // Set the large number $max_price = 0; // Set the small number $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id ); $rate = (float) $this->currency->getValue($this->session->data['currency']); $results = $this->model_catalog_product->getProducts($filter_data); foreach($results as $result) { $price = (float) $result['price']; if($price < $min_price) { $min_price = $price; } if($price > $max_price) { $max_price = $price; } } $data['min_price'] = ceil($min_price * $rate); $data['max_price'] = round($max_price * $rate); if (isset($this->request->get['price'])) { $price_data = $this->request->get['price']; } else { $price_data = ''; } if (isset($this->request->get['price'])) { $price_data = explode(',', $price_data); $data['current_min_price'] = $price_data[0]; $data['current_max_price'] = $price_data[1]; } else { $data['current_min_price'] = $data['min_price']; $data['current_max_price'] = $data['max_price']; } $data['currency_symbol'] = $this->currency->getSymbolLeft($this->session->data['currency']); /* End */ $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) . ')' : ''), 'e_name' => $filter['name'] ); } $data['filter_groups'][] = array( 'filter_group_id' => $filter_group['filter_group_id'], 'name' => $filter_group['name'], 'filter' => $childen_data ); } } } if($data['filter_groups']) { return $this->load->view('extension/module/oclayerednavigation/oclayerednavigationfilter.tpl', $data); } } /** * Load category view */ public function category() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); $json = array(); if (isset($this->request->get['price'])) { $price_data = $this->request->get['price']; } else { $price_data = ''; } if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = $this->request->get['limit']; } else { $limit = $this->config->get($this->config->get('config_theme') . '_product_limit'); } if (isset($this->request->get['path'])) { $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']; } if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['text_sale'] = $this->language->get('text_sale'); $data['text_new'] = $this->language->get('text_new'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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['price'])) { $url .= '&price=' . $this->request->get['price']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $result['category_id'] . $url ); } $data['products'] = array(); $rate = (float) $this->currency->getValue($this->session->data['currency']); // Min and Max Price $filter_price = array(); if (isset($this->request->get['price'])) { $price_data = explode(',', $price_data); $filter_price['min_price'] = ceil($price_data[0] / $rate - 1); $filter_price['max_price'] = round($price_data[1] / $rate); } // var_dump($filter_price);die; $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'filter_price' => $filter_price, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); $data['new_products'] = array(); $filter_new_data = array( 'sort' => 'p.date_added', 'order' => 'DESC', 'start' => 0, 'limit' => 10 ); $new_results = $this->model_catalog_product->getProducts($filter_new_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $is_new = false; if ($new_results) { foreach($new_results as $new_r) { if($result['product_id'] == $new_r['product_id']) { $is_new = true; } } } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'is_new' => $is_new, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.sort_order&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=pd.name&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=pd.name&order=DESC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.price&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.price&order=DESC' . $url ); if ($this->config->get('config_review_status')) { $data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=rating&order=DESC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=rating&order=ASC' . $url ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.model&order=ASC' . $url ); $data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . '&sort=p.model&order=DESC' . $url ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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['price'])) { $url .= '&price=' . $this->request->get['price']; } $data['limits'] = array(); $limits = array_unique(array($this->config->get($this->config->get('config_theme') . '_product_limit'), 25, 50, 75, 100)); sort($limits); foreach($limits as $value) { $data['limits'][] = array( 'text' => $value, 'value' => $value, 'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url . '&limit=' . $value ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } $pagination = new Pagination(); $pagination->total = $product_total; $pagination->page = $page; $pagination->limit = $limit; $pagination->url = $this->config->get('config_url') . 'index.php?route=product/category&path=' . $category_id . $url . '&page={page}'; $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit)); if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), true), 'next'); } $data['sort'] = $sort; $data['order'] = $order; $data['limit'] = $limit; $json['result_html'] = $this->load->view('extension/module/oclayerednavigation/occategoryfilter.tpl', $data); $url = ''; if (isset($this->request->get['price'])) { $url .= '&price=' . $this->request->get['price']; } 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']; } $json['filter_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } 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']; } $json['price_action'] = str_replace('&', '&', $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url); $json['layered_html'] = $this->layer(); } else { $json['result_html'] = "No No No"; } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } Змінено 16 січня 2017 користувачем WellChuck Надіслати Поділитися на інших сайтах More sharing options...
Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 oclayerednavigation - в папке модуля не нашел Если нет /extension/module/oclayerednavigation/category.php, то должен быть /extension/module/oclayerednavigation.php, потому что тогда, действительно, category - это не файл, а метод в oclayerednavigation.php. Если и oclayerednavigation.php нет, то пытаться что-то править в js бессмысленно - без этого файла ничего всё равно работать не будет. Надіслати Поділитися на інших сайтах More sharing options...
markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Я "...пу и плачу" :|Это где такого говнокода вы "набрали" foreach($limits as $value) {$data['limits'][] = array('text' => $value,'value' => $value,'href' => $this->config->get('config_url') . 'index.php?route=extension/module/oclayerednavigation/category&path=' . $category_id . $url . '&limit=' . $value);}...$pagination->url = $this->config->get('config_url') . 'index.php?route=product/category&path=' . $category_id . $url . '&page={page}' мАмА дАрАгАя А как же https ?! Т.е. подгружаться под https "мы" не будем stratup.php: if (!$query->num_rows) { $this->config->set('config_url', HTTP_SERVER); $this->config->set('config_ssl', HTTPS_SERVER); } Короче - отправьте для начала этот говномодуль в мусорку Где вы его нашли? Что за модуль? $json['result_html'] = "No No No"; :? :roll: Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я "...пу и плачу" :| Это где такого говнокода вы "набрали" мАмА дАрАгАя А как же https ?! Т.е. подгружаться под https "мы" не будем Короче - отправьте для начала этот говномодуль в мусорку Где вы его нашли? Что за модуль? шло с темой :mellow: Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 шло с темой :mellow: Как обычно куча говномодулей в придачу к г..ну в красивой упаковке Требуйте назад деньги Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 О да... тема изобилует просто говнокодом http: //saharafashion3.demo.towerthemes.com/index.php?route=module/ocquickview/seoview&ourl=http://saharafashion3.demo.towerthemes.com/gallery/fashion-3 А учитывая что google прекрасно уже понимает json на странице (не через ajax замечу) - "то это залёт солдат" - а точнее дубль товара Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo isset($path) ? $path : ''; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Змінено 16 січня 2017 користувачем Dotrox 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Лучше бы у меня была такая проблема, чем "No No No"... Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo $path; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Ситуация изменилась Пагинация теперь работает, но только после выбора фильтра. При переходе по страницам URL в адресной строке не меняется Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей То-есть даже пытаться не стоит? Может вы можете что-то в качестве альтернативы подкинуть? Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) И к сожалению не работает :( Логично. Вот так должно всё работать: if(filter_url.search(new_route) == -1) { var query = [new_route]; if(typeof($('#content').attr('data-path')) != 'undefined'){ query.push('path=' + $('#content').attr('data-path')); } var i = filter_url.indexOf('?'); if(i > -1){ query.push(filter_url.slice(i+1)); } filter_url = 'index.php?' + query.join('&'); } А код модуля действительно местами не очень. Ну и, за отсутствие поддержки ЧПУ действительно можно было бы от автора потребовать либо исправлений, либо компенсации. Змінено 16 січня 2017 користувачем Dotrox 2 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пісочниця Seo URL - Opencart 2.3.0.2 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я "...пу и плачу" :| Это где такого говнокода вы "набрали" мАмА дАрАгАя А как же https ?! Т.е. подгружаться под https "мы" не будем Короче - отправьте для начала этот говномодуль в мусорку Где вы его нашли? Что за модуль? шло с темой :mellow: Надіслати Поділитися на інших сайтах More sharing options...
markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 шло с темой :mellow: Как обычно куча говномодулей в придачу к г..ну в красивой упаковке Требуйте назад деньги Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 О да... тема изобилует просто говнокодом http: //saharafashion3.demo.towerthemes.com/index.php?route=module/ocquickview/seoview&ourl=http://saharafashion3.demo.towerthemes.com/gallery/fashion-3 А учитывая что google прекрасно уже понимает json на странице (не через ajax замечу) - "то это залёт солдат" - а точнее дубль товара Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo isset($path) ? $path : ''; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Змінено 16 січня 2017 користувачем Dotrox 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Лучше бы у меня была такая проблема, чем "No No No"... Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo $path; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Ситуация изменилась Пагинация теперь работает, но только после выбора фильтра. При переходе по страницам URL в адресной строке не меняется Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей То-есть даже пытаться не стоит? Может вы можете что-то в качестве альтернативы подкинуть? Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) И к сожалению не работает :( Логично. Вот так должно всё работать: if(filter_url.search(new_route) == -1) { var query = [new_route]; if(typeof($('#content').attr('data-path')) != 'undefined'){ query.push('path=' + $('#content').attr('data-path')); } var i = filter_url.indexOf('?'); if(i > -1){ query.push(filter_url.slice(i+1)); } filter_url = 'index.php?' + query.join('&'); } А код модуля действительно местами не очень. Ну и, за отсутствие поддержки ЧПУ действительно можно было бы от автора потребовать либо исправлений, либо компенсации. Змінено 16 січня 2017 користувачем Dotrox 2 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пісочниця Seo URL - Opencart 2.3.0.2 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000
markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 О да... тема изобилует просто говнокодом http: //saharafashion3.demo.towerthemes.com/index.php?route=module/ocquickview/seoview&ourl=http://saharafashion3.demo.towerthemes.com/gallery/fashion-3 А учитывая что google прекрасно уже понимает json на странице (не через ajax замечу) - "то это залёт солдат" - а точнее дубль товара Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo isset($path) ? $path : ''; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Змінено 16 січня 2017 користувачем Dotrox 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Лучше бы у меня была такая проблема, чем "No No No"... Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo $path; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Ситуация изменилась Пагинация теперь работает, но только после выбора фильтра. При переходе по страницам URL в адресной строке не меняется Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей То-есть даже пытаться не стоит? Может вы можете что-то в качестве альтернативы подкинуть? Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) И к сожалению не работает :( Логично. Вот так должно всё работать: if(filter_url.search(new_route) == -1) { var query = [new_route]; if(typeof($('#content').attr('data-path')) != 'undefined'){ query.push('path=' + $('#content').attr('data-path')); } var i = filter_url.indexOf('?'); if(i > -1){ query.push(filter_url.slice(i+1)); } filter_url = 'index.php?' + query.join('&'); } А код модуля действительно местами не очень. Ну и, за отсутствие поддержки ЧПУ действительно можно было бы от автора потребовать либо исправлений, либо компенсации. Змінено 16 січня 2017 користувачем Dotrox 2 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Пісочниця Seo URL - Opencart 2.3.0.2
markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo isset($path) ? $path : ''; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Змінено 16 січня 2017 користувачем Dotrox 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Лучше бы у меня была такая проблема, чем "No No No"... Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo $path; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Ситуация изменилась Пагинация теперь работает, но только после выбора фильтра. При переходе по страницам URL в адресной строке не меняется Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей То-есть даже пытаться не стоит? Может вы можете что-то в качестве альтернативы подкинуть? Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) И к сожалению не работает :( Логично. Вот так должно всё работать: if(filter_url.search(new_route) == -1) { var query = [new_route]; if(typeof($('#content').attr('data-path')) != 'undefined'){ query.push('path=' + $('#content').attr('data-path')); } var i = filter_url.indexOf('?'); if(i > -1){ query.push(filter_url.slice(i+1)); } filter_url = 'index.php?' + query.join('&'); } А код модуля действительно местами не очень. Ну и, за отсутствие поддержки ЧПУ действительно можно было бы от автора потребовать либо исправлений, либо компенсации. Змінено 16 січня 2017 користувачем Dotrox 2 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo isset($path) ? $path : ''; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Змінено 16 січня 2017 користувачем Dotrox 1 Надіслати Поділитися на інших сайтах More sharing options...
WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Ну чего вот еще по быстрому Лучше бы у меня была такая проблема, чем "No No No"... Надіслати Поділитися на інших сайтах More sharing options...
WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 В /catalog/controller/product/category.php после if (isset($this->request->get['path'])) { Добавляете: $data['path'] = $this->request->get['path']; В /catalog/view/theme/__шаблон__/template/product/category.tpl строку <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> Дополняете до такого вида: <div id="content" data-path="<?php echo $path; ?>" class="<?php echo $class; ?>"><?php echo $content_top; ?> А затем уже правите js. Перед if(filter_url.search(new_route) != -1) { Добавляете: if(filter_url.search(new_route) == -1) { var query = '?' + (typeof($('#content').attr('path')) != 'undefined') ? 'path=' + $('#content').attr('path') : ''; var i = filter_url.search('?'); if(i > -1){ query += filter_url.slice(i+1); } filter_url = new_route + query; } Ситуация изменилась Пагинация теперь работает, но только после выбора фильтра. При переходе по страницам URL в адресной строке не меняется Надіслати Поділитися на інших сайтах More sharing options...
Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Надіслати Поділитися на інших сайтах More sharing options...
WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Замените var i = filter_url.search('?'); на это: var i = filter_url.indexOf('?'); Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Надіслати Поділитися на інших сайтах More sharing options...
markimax Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2 И к сожалению не работает :( Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей 1 Надіслати Поділитися на інших сайтах More sharing options... WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей То-есть даже пытаться не стоит? Может вы можете что-то в качестве альтернативы подкинуть? Надіслати Поділитися на інших сайтах More sharing options... Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) И к сожалению не работает :( Логично. Вот так должно всё работать: if(filter_url.search(new_route) == -1) { var query = [new_route]; if(typeof($('#content').attr('data-path')) != 'undefined'){ query.push('path=' + $('#content').attr('data-path')); } var i = filter_url.indexOf('?'); if(i > -1){ query.push(filter_url.slice(i+1)); } filter_url = 'index.php?' + query.join('&'); } А код модуля действительно местами не очень. Ну и, за отсутствие поддержки ЧПУ действительно можно было бы от автора потребовать либо исправлений, либо компенсации. Змінено 16 січня 2017 користувачем Dotrox 2 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
WellChuck Опубліковано: 16 січня 2017 Автор Share Опубліковано: 16 січня 2017 Я вот не могу понять :) ТС а чего вы к автору не обратитесь этого позора Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ... А контроллер просто аут С такими костылями далеко не "убежишь" Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё. Куча как архитектурных ошибок так и просто детских ляпов, костылей То-есть даже пытаться не стоит? Может вы можете что-то в качестве альтернативы подкинуть? Надіслати Поділитися на інших сайтах More sharing options...
Dotrox Опубліковано: 16 січня 2017 Share Опубліковано: 16 січня 2017 (змінено) И к сожалению не работает :( Логично. Вот так должно всё работать: if(filter_url.search(new_route) == -1) { var query = [new_route]; if(typeof($('#content').attr('data-path')) != 'undefined'){ query.push('path=' + $('#content').attr('data-path')); } var i = filter_url.indexOf('?'); if(i > -1){ query.push(filter_url.slice(i+1)); } filter_url = 'index.php?' + query.join('&'); } А код модуля действительно местами не очень. Ну и, за отсутствие поддержки ЧПУ действительно можно было бы от автора потребовать либо исправлений, либо компенсации. Змінено 16 січня 2017 користувачем Dotrox 2 Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts