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

29 Сентябрь 2014, 21:42:16
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
При вводе в поиск слова "Белшина", результаты при помощи "ajax поиска" выводятся, но когда жму "Найти" - пишет "Извините, по вашему запросу ничего не найдено "Белшина"". А при вводе "белшина" - все нормально. Как исправить косяк?
P.S. При вводе других значений, например: "АШК, Ашк, ашк" и других - все нормально.
P.S.S. v1.6.0.9
30 Сентябрь 2014, 10:50:50
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В классе поиска ничего не меняли? Изменяли базовые классы?
30 Сентябрь 2014, 11:11:03
Ответ #2
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нет, не менял. Проверил на чисто установленном движке, со стандартным шаблоном - проблема осталась.
30 Сентябрь 2014, 11:18:58
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Замените файл /classes/Search.php (приложил новый), очистите кеш (на сервере и в браузере) и попробуйте поиск.
30 Сентябрь 2014, 11:32:03
Ответ #4
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не помогло, проверил на работающем и на чистом движке.
P.S. Переиндексацию делал.
30 Сентябрь 2014, 12:18:55
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
У меня на стнадарном движке и теме работает. Это может косячит браузер. Сайт какой, посмотрю на своем?
30 Сентябрь 2014, 12:45:06
Ответ #6
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Проверял на разных браузерах - проблема оставалась. Подсказали решение проблемы:
1. /classes/Tools.php
public static function replaceAccentedChars($str)
    {
        ...
    }
заменить на:
public static function replaceAccentedChars($str)
    {
        return $str;
    }
2. Панель управления > Настройки > Поиск :: Пересоздать индекс
30 Сентябрь 2014, 12:57:36
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Такая же проблема, поиск работает непредсказуемо. Причем некоторые буквы ищет нормально большие и маленькие, а часть букв игнорирует.
Неработет поиск по русским буквам "Б, Е".
Способ менять Tools.php не подходит, магазин на 3 языках анг., русс, че́шский. Если так делаю, на чешском вообще не ищет.
30 Сентябрь 2014, 13:30:38
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Как вариант. можно добавить определение языка.
Если русский, то выключать конвертацию, если чешский, применить.
30 Сентябрь 2014, 13:31:05
Ответ #9
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У меня при поиске значения одновременно на русском и английском все нормально.
30 Сентябрь 2014, 13:41:06
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В русском и английском нет надстрочных знаков (accents), в чешском есть. Эта функция  как раз для таких языков.
Этот метод не на все случаи, а только под определенные сайты.
30 Сентябрь 2014, 13:49:16
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Подробнее можете, а то я нуб в престе. Только осваиваю.
30 Сентябрь 2014, 23:31:25
Ответ #12
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Nikola можете переопределить контроллер SearchController.php. Для этого добавьте приложенный файл в папку /override/controllers/front/SearchController.php.
01 Октябрь 2014, 09:59:15
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
01 Октябрь 2014, 14:36:35
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Замена родительского класса конечно лучше. Но это же работы в разы больше. Да и не всегда работает. Отлаживать замучаешся.
Если по-быстрому делать, так удалить функцию в  классе Tools.php проще и быстрее. Может и по дилетански, но работает же. Можно и не обновлять prestashop, это же не обязательно.