Задать вопрос
@AgeWalker

Как убрать # в url фильтра (PrestaShop модуль blocklayered)?

CMS PrestaShop
Модуль: blocklayered

Добрый день, встал вопрос, который не могу никак решить ни сам, ни с помощью гугла.
Видел много похожих вопросов, но ни одной реализации.

Ситуация:
На сайте есть фильтр. При фильтрации он выдает следующий url:
/catalog#/type-kurtka_ukor_bryuki/gost-124280_2014
В url содержится # (решетка). Моя задача убрать ее оттуда. Что бы url был одним из следующих вариантов:
/catalog/type-kurtka_ukor_bryuki/gost-124280_2014
/catalog/filter/type-kurtka_ukor_bryuki/gost-124280_2014


Пробовал делать следующее:
Файл /modules/blocklayered/blocklayered.php
Менял
$type_filter['values'][$key]['link'] = $categorie_link.'#'.ltrim($parameters, '/');

на
$type_filter['values'][$key]['link'] = $categorie_link.'/filter'.ltrim($parameters, '/');

Менял
'current_friendly_url' => '#'.$filter_block['current_friendly_url']/*((int)$n == (int)$nb_products) ? '#/show-all': '#'.$filter_block['current_friendly_url']*/,

на
'current_friendly_url' => '/filter'.$filter_block['current_friendly_url']/*((int)$n == (int)$nb_products) ? '#/show-all': '#'.$filter_block['current_friendly_url']*/,


Файл /themes/custom/js/modules/blocklayered/blocklayered.js
Менял
if (current_friendly_url != '#'){
      window.location.href = current_friendly_url;
}

на
if (current_friendly_url != '/filter'){
      window.location.href = current_friendly_url;
}

Менял
if (current_friendly_url != '#/show-all')
$('div.clearfix.selector1').show();

на
if (current_friendly_url != '/filter/show-all')
$('div.clearfix.selector1').show();


Файл modules/blocklayered/blocklayered.js
Менял
if (window.location.href.split('#').length == 2 && window.location.href.split('#')[1] != '')
	{
		var params = window.location.href.split('#')[1];
		reloadContent('&selected_filters='+params);
	}

на
if (window.location.href.split('/filter').length == 2 && window.location.href.split('/filter')[1] != '')
	{
		var params = window.location.href.split('/filter')[1];
		reloadContent('&selected_filters='+params);
	}


Что я добился этим.
По идее я ожидал увидеть url следующего вида:
/catalog/filter/type-kyrtka
Но получал редирект на
/filter/type-kyrtka
и 404 ошибку.

Как решить данную ситуацию... не знаю.
По идее нужно где-то как-то переписать управление url. Что бы он не перекидывал куда мне не нужно...

Проверил я вручную url
/catalog/filter/type-kyrtka
Отдает 404 ошибку.

----
Зачем это нужно?
Нужно для СЕО.
Вариант с #! не пройдет, так как такое игнорирует гугл. Уже проверяли.
  • Вопрос задан
  • 200 просмотров
Подписаться 1 Сложный Комментировать
Пригласить эксперта
Ответы на вопрос 1
@ITLandgraf
vk.com/digital_workroom
Посмотрите переадресацию в .htaccess - Prestashop выводит в строке URL совсем не то, что генерирует на самом деле. Найдите где там идёт вывод строки URL для фильтра и преобразуйте новый вариант к работающему внутреннему адресу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы