Автор Тема: Знак # в урле при выборе фильтра  (Прочитано 1423 раз)

15 Ноября 2014, 20:05:14
  • Новичок
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте!
Подскажите, пожалуйста, как правильно убрать # из урла при выборе фильтрации?

В настройках фильтра указала - Индексировать и атрибуты, и характеристики, но от этого ничего не меняется и # всё-равно появляется

у меня получилось убрать следующим способом, но это что не то по ходу:

в файле /modules/blocklayered/blocklayered.php
строка 2805:
$type_filter['values'][$key]['link'] = Context::getContext()->link->getCategoryLink($parent, null, null).'#'.ltrim($parameters, '/');
заменяем на:
$type_filter['values'][$key]['link'] = Context::getContext()->link->getCategoryLink($parent, null, null).ltrim($parameters, '/');

и строка 3093:
'current_friendly_url' => ((int)$n == (int)$nb_products) ? '#/show-all': '#'.$filter_block['current_friendly_url'],
заменяем на:
'current_friendly_url' => ((int)$n == (int)$nb_products) ? '#/show-all': '.'.$filter_block['current_friendly_url'],

Но теперь ошибка появляется при выборе какого-нибудь фильтра, что страница не найдена http://www.uniqroom.ru/matrasy/. Причём сначала фильтр срабатывает нормально, но потом страница обновляется и появляется эта ошибка

помогите, пожааалуйста! очень нужно решить эту проблему
уже очень давно с ней парюсь
15 Ноября 2014, 20:10:05
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 763
  • Репутация: +6/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А зачем? Для поисковиков это бесполезно, для посетителей не нужно. Для чего это делать?
15 Ноября 2014, 20:13:18
Ответ #2
  • Новичок
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
мне нужно индексировать эти страницы фильтрации, чтобы у меня было больше посадочных страниц
для некоторых фильтров, например, по производителю, я буду выводить соответствующие тексты и мета-теги
15 Ноября 2014, 20:30:04
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 763
  • Репутация: +6/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Убрать не получиться, заменить можно. Для того чтобы убрать нужно переделать схему чпу в классе Dispatcher. В url все будет считано до знака фильтров, путь страницы будет формироваться по правилам чпу. Если у вас не будет знака, после которого не учитывать значения для url, то невозможно будет определить адрес страницы.
15 Ноября 2014, 20:32:14
Ответ #4
  • Новичок
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
а как правильно заменить?
15 Ноября 2014, 20:33:37
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 763
  • Репутация: +6/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как вариант можно через правила редиректа попробывать менять адреса, но придеться в ручную эти правила добавлять, а если товаров много и меняются часто, то это быстро надоест.
15 Ноября 2014, 20:37:42
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 763
  • Репутация: +6/-0
  • Сообщество PrestaShop
    • Просмотр профиля
а как правильно заменить?
Фактически только для категорий менять можно. Фильтры актуальны при листинге товара.
Находите правила категорий
$default_routes = array(
'category_rule' => array( ...
и меняете. Еще проверить нужно будет работу с FC_MODULE, там для модулей путь собирается.
15 Ноября 2014, 20:43:47
Ответ #7
  • Партнер
  • Фрилансер
  • ****
  • Сообщений: 230
  • Репутация: +11/-0
  • SEO оптимизация сайтов, интенет-магазинов.
    • Просмотр профиля
Я поднимал такой вопрос вопрос на серче, не для престы, а для другой смс. Мне ответили, что хеш можно убрать при момощи javascript, изменив свойство window.location.hash.
Больше вариантов нет.
Поисковая оптимизация, SEO  оптимизация сайтов, интенет-магазинов.  Работа на результат –  вывод в топ, увеличение посещяемости и увеличение продаж.
15 Ноября 2014, 20:51:14
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 884
  • Репутация: +206/-0
    • Просмотр профиля
Если нельзя убрать, значит можно найти другое решение.
Для yandex можно использовать символ "!" после решётки. Заменяем '#' на  '#!' и все будет нормально индексироваться яндексом. Это будут разные страницы.
15 Ноября 2014, 21:05:11
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 13458
  • Репутация: +14561/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как вариант можно через правила редиректа попробывать менять адреса, но придеться в ручную эти правила добавлять, а если товаров много и меняются часто, то это быстро надоест.
Часть url после решетки (document.location.hash в javascript), при запросах на сервер не передается. Cмотрите в любом дебагере, в заголовках запроса после GET/POST.
Это все работает через ajax запросы (javascript) и эта часть в url обрабатывается js на стороне клиента, так что htaccess не причем.
16 Ноября 2014, 12:55:16
Ответ #10
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 1102
  • Репутация: +336/-0
  • Job-Freelance - работа для специалистов PrestaShop
    • Просмотр профиля
    • Job Freelance - удаленная работа программистам, веб-мастерам и дизайнерам
Если нельзя убрать, значит можно найти другое решение.
Для yandex можно использовать символ "!" после решётки. Заменяем '#' на  '#!' и все будет нормально индексироваться яндексом. Это будут разные страницы.
Все генеальное просто. Только вредно это. Такие темы регулярно поднимают новички на сёрче. То что им там пишут, что этот способ не работает, их не оставливает.

Создавать десятки лендингов имеет смысл только тогда,  когда вы предлагаете много непохожих друг на друга товаров. У вас же получается однотипный товар с различными характеристиками. Что в корне неверно по отношению к посадочным страницам.

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

Если вам так уж хочется реализовать вашу идею, то используйте модуль Advanced Search 4 for Prestashop. Он хоть работает быстрее.
Job Freelance - предложения от европейских работодателей для  программистов, веб-мастеров и дизайнеров - специалистам по Magento и PrestaShop.
16 Ноября 2014, 13:10:50
Ответ #11
  • Партнер
  • Фрилансер
  • ****
  • Сообщений: 230
  • Репутация: +11/-0
  • SEO оптимизация сайтов, интенет-магазинов.
    • Просмотр профиля
Делать лендинги на фильтрах это жесть. Заголовок один, текст одинаковый, содержимое страниц на 99% одно и тоже. Результат могу сказать сразу = БАН.
Поисковая оптимизация, SEO  оптимизация сайтов, интенет-магазинов.  Работа на результат –  вывод в топ, увеличение посещяемости и увеличение продаж.
16 Ноября 2014, 17:56:08
Ответ #12
  • Новичок
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем спасибо за ответы! буду разбираться...

Делать лендинги на фильтрах это жесть. Заголовок один, текст одинаковый, содержимое страниц на 99% одно и тоже. Результат могу сказать сразу = БАН.
с чего вы взяли, что так будет? я сейчас как раз работаю над тем, чтобы у всех страниц были разные тексты и мета-теги
16 Ноября 2014, 18:17:53
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 1010
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Тогда точно не с модулем фильтров. Этот модуль тормознутый. Его бы вообще на сайте не использовать.
То что вы хотите сделать не возможно реализовать на таких модулях как Advanced Search и blocklayered. Вам нужно создавать свой модуль, в нем объединять функции фильтрации, подмены тегов, заголовков и т.д.