Автор Тема: Проблема с пагинатором в каталоге товаров  (Прочитано 470 раз)

07 Октября 2014, 09:18:03
  • Старожил
  • ****
  • Сообщений: 265
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Столкнулся со следующей проблемой:
При выборе в меню головной категории, например "Сумки", то
в пагинаторе формируются ссылки вот такого вида:
http://shop.ru/3-bags#/page-1
и при переходе по этой ссылке отображается не корректная информация, точнее пустой каталог.

А вот если, я перехожу на подчинённый каталог, например "Сумка на руку ", то ссылки в пагинаторе получаются в виде:
http://shop.ru/5-hand-bag?p=2
при переходе по этой ссылке товары отображаются корректно.

Возможно кто нибудь сталкивался с такой проблемой...

Обновление модуля blocklayered до последней версии не помогло.
Версия Prestashop 1.6.
Правда тема у меня starshop_fashion version 1.0
 
07 Октября 2014, 12:24:58
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86050
  • Репутация: +25403/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У вас ошибка в формированиие url.
Неправильно при выборе 1-ой страницы "page-1"
При выборе второй правильно "p=2".
07 Октября 2014, 13:22:57
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 1010
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как будет показана выбранная страницы зависит от темы и seo настроек.
В prestashop 1.6 из коробки "page-1" не используется. Добавление параметров в url идет со второй страницы "page-2".
"p=2" - так было в старой версии prestashop 1.4 - 1.5.
Смотреть нужно шаблоны и js вашей темы. Где в них ошибка. 
07 Октября 2014, 15:31:10
Ответ #3
  • Старожил
  • ****
  • Сообщений: 265
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не знаю, может кому понадобится? Вскрытие показало, что виноват модуль blocklayered,
а именно blocklayered.js
Неправильно формировались ссылки в функции paginationButton

function paginationButton() {
if (typeof(current_friendly_url) === 'undefined')
current_friendly_url = '';
$('div.pagination a').not(':hidden').each(function () {
if ($(this).attr('href').search('p=') == -1) {
//if ($(this).attr('href').search('&p=') == -1) {
var page = 1;

}
else {
//var page = $(this).attr('href').replace(/^.*&p=(\d+).*$/, '$1');
var page = $(this).attr('href').replace(/^.*?p=(\d+).*$/, '$1');
}
var location = window.location.href.replace(/#.*$/, '');
//$(this).attr('href', location+current_friendly_url.replace(/\/page-(\d+)/, '')+'/page-'+page);
$(this).attr('href', location+current_friendly_url.replace('?p='/(\d+)/, '') + '?p='+page);

});

строки с // это что было... Вроде работает
Смущает один момент удалял из ссылки такую часть  "?p=1" (2,3 ... и т.д.)
вот так
replace('?p='/(\d+)/, '') + '?p='+page);
Возможно следует сделать по другому...