Автор Тема: Кириллические псевдонимы в поиске  (Прочитано 1063 раз)

14 Август 2015, 17:10:30
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Пытаюсь задать кириллические псевдонимы в поиске, но они не работают.

Например (эпл - apple), но не работает. На английском (apl - apple) работает нормально. Как с этим бороться?
14 Август 2015, 17:12:26
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Сайт и база данных должны быть в кодировке utf-8. Тогда все работает. Проверено на версии prestashop 1.6.
14 Август 2015, 17:20:39
Ответ #2
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
В последних версиях prestashop заменяет кириллицу на латиницу. Там в классе поиска перекодирока идет функцией replaceAccentedChars. Нужно искать и удалять перекодирку в контроллере и классе.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
14 Август 2015, 17:28:58
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нет там перекодировки
$search = strval(Tools::getValue('search'));
$string = strval(Tools::getValue('alias'));
$aliases = explode(',', $string);
...
foreach ($aliases as $alias)
{
$obj = new Alias(null, trim($alias), trim($search));
$obj->save();
}
14 Август 2015, 17:34:46
Ответ #4
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Вы попробуйте создать на русском псевдонимы.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
14 Август 2015, 17:38:06
Ответ #5
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Попробывал, создал в обе стороны. Prestashop 1.6.1, установка из коробки. Никаких проблем не увидел.
17 Август 2015, 14:26:15
Ответ #6
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Попробывал, создал в обе стороны. Prestashop 1.6.1, установка из коробки. Никаких проблем не увидел.

Так создать то можно, в этом проблемы и не было. проблема в том что поиск при этом их в расчет не берет, не использует как псевдонимы.
17 Август 2015, 14:34:02
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Попробывал, создал в обе стороны. Prestashop 1.6.1, установка из коробки. Никаких проблем не увидел.
Из коробки не создает. Я тоже пробывал создать на русском. Все русские названия переводит в латиницу. А это значит, что поиск по русским псевдонимам не возможен.
17 Август 2015, 16:12:44
Ответ #8
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В общем проблему решил.

mAgency был прав. Поиск использует статический метод класса Tools под названием replaceAccentedChars. То есть prestashop с помощью этого метода кириллический запрос переводит в транслит. Например так айпад -> ajpad и уже смотрит является ли ajpad псевдонимом.

То есть чтобы все работало можно конечно допилить админку, а можно просто задавать алиасы вот так ajpad -> ipad, тогда будет работать поиск по слову айпад. Может кому будет полезно.
06 Ноябрь 2015, 22:01:59
Ответ #9
  • Новичок
  • *
  • Сообщений: 1
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я нашел в теме
http://forge.prestashop.com/browse/PSCSX-4008

ответ: файл \classes\Alias.php
 
Заменить файлом с github

Затем удалить только кириллические псевдонимы и добавить снова.

В принципе, устраивает, все заменяет по усмотрению алгоритма, не хранятся несколько вариантов слова, как например буквы "е" и "э" - одинаковые.
Не удобно, что система показывает ошибку, поскольку заменяется одно название.