Рекомендуемые сообщения

WellChuck    3

Уважаемые гуру, очень нуждаюсь в вашей помощи!

 

Собственно возникла проблема с работоспособность 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:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    335

<a href="javascript:void(0);" onclick="oclayerednavigationajax.filter("http://site/kabel?page=2")">2</a>

Ну, если у вас ссылки выглядят так, то SEO Url тут не причём. У вас эту ссылку должен обрабатывать js и загружать контент аяксом. Посмотрите в консоли браузера, что происходит после клика на такую ссылку и, возможно, там есть ошибки ещё до клика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WellChuck    3

Ну, если у вас ссылки выглядят так, то 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);');
        });
    }

};

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    335

А дело таки в ЧПУ. Скрипт ищет не ЧПУ роут и не находя его просто ничего не делает.

 

Но тут правками в этом js не отделаться, нужно ещё как-то передать в скрипт id текущей категории.

 

Покажите файл /extension/module/oclayerednavigation/category.php.

 

Кстати, этот js код у вас в отдельном js файле или в теле шаблона (если да, то какого)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WellChuck    3

А дело таки в ЧПУ. Скрипт ищет не ЧПУ роут и не находя его просто ничего не делает.

 

Но тут правками в этом 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);
	}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 545

....

 

Читайте внимательно что вам пишут

 

Покажите файл /extension/module/oclayerednavigation/category.php.

 

 

А вы что "показали"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WellChuck    3

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);
	}
}
Изменено пользователем WellChuck

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 545

 

oclayerednavigation - в папке модуля не нашел

 

...

Ну как это нету, если в JS идет к нему обращение судя по коду

'route=extension/module/oclayerednavigation/category';

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WellChuck    3

Ну catalog/controller/extension/module/ - полный путь, дальше папок правда нету...  :mellow:  

category.php лежал в папке module

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 545

Ну catalog/controller/extension/module/ - полный путь, дальше папок правда нету...  :mellow:  

category.php лежал в папке module

Да причем здесь папка!

extension/module/oclayerednavigation.php

А category просто его метод, который вызывает JS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WellChuck    3

Да причем здесь папка!

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));

    }

} 
Изменено пользователем WellChuck

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    335
oclayerednavigation - в папке модуля не нашел

Если нет /extension/module/oclayerednavigation/category.php, то должен быть /extension/module/oclayerednavigation.php, потому что тогда, действительно, category - это не файл, а метод в oclayerednavigation.php.

Если и oclayerednavigation.php нет, то пытаться что-то править в js бессмысленно - без этого файла ничего всё равно работать не будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 545

Я "...пу и плачу" :|

Это где такого говнокода вы "набрали"

 

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:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WellChuck    3

Я "...пу и плачу" :|

Это где такого говнокода вы "набрали"

 

 

мАмА дАрАгАя

 

А как же https ?! Т.е. подгружаться под https "мы" не будем

 

 

Короче - отправьте для начала этот говномодуль в мусорку

Где вы его нашли? Что за модуль?

шло с темой  :mellow:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 545

шло с темой  :mellow:

Как обычно куча говномодулей в придачу к г..ну в красивой упаковке

Требуйте назад  деньги

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 545

О да... тема изобилует просто говнокодом

 

http: //saharafashion3.demo.towerthemes.com/index.php?route=module/ocquickview/seoview&ourl=http://saharafashion3.demo.towerthemes.com/gallery/fashion-3

 

А учитывая что google прекрасно уже понимает json на странице (не через ajax замечу)  - "то это залёт солдат" - а точнее дубль товара

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 545

Ну чего вот еще по быстрому

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    335

В /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;
}
Изменено пользователем Dotrox

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WellChuck    3

Ну чего вот еще по быстрому

 

Лучше бы у меня была такая проблема, чем "No No No"...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WellChuck    3

 

В /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 в адресной строке не меняется

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    335

Замените

var i = filter_url.search('?');

на это:

var i = filter_url.indexOf('?');

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WellChuck    3

 

Замените

var i = filter_url.search('?');

на это:

var i = filter_url.indexOf('?');

Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2

И к сожалению не работает  :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 545

Ссылка теперь выглядит так - http://site/route=extension/module/oclayerednavigation/categorypath=undefinedpage=2

И к сожалению не работает  :(

Я вот не могу понять :)

ТС а чего вы к автору не обратитесь этого позора

 

Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ...

А контроллер просто  аут

С такими костылями далеко не "убежишь"

 

Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё.

Куча как архитектурных ошибок так и просто детских ляпов, костылей

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
WellChuck    3

Я вот не могу понять :)

ТС а чего вы к автору не обратитесь этого позора

 

Это просто ж "вершина" говнокода, заменять роуты и формировать js ссылки url таким методом в opencart - ну это просто 3.14, ...

А контроллер просто  аут

С такими костылями далеко не "убежишь"

 

Здесь даже и рассматривать вопрос не стоит - просто "деньги назад". Всё.

Куча как архитектурных ошибок так и просто детских ляпов, костылей

То-есть даже пытаться не стоит?

 

Может вы можете что-то в качестве альтернативы подкинуть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    335
И к сожалению не работает :(

Логично.

 

Вот так должно всё работать:

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('&');
}

А код модуля действительно местами не очень. Ну и, за отсутствие поддержки ЧПУ действительно можно было бы от автора потребовать либо исправлений, либо компенсации.

Изменено пользователем Dotrox

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу