Автор Тема: Поиск PrestaShop 1.6.1.7 не понимает знак "-"  (Прочитано 757 раз)

10 Январь 2018, 16:04:49
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем доброго времени суток! Помогите пожалуйста человеку не разбирающемуся в программировании. Есть интернет магазин, много номенклатуры в названии которых присутствует знак "-", к примеру Су-22, F-14  и т.д. В самой базе сайта, в админке, всё замечательно ищет, набрал F-14 он все их и нашел. А вот на сайте через поиск, никак не хочет. Читал, разбирался, но в силу своего скудоумия не смог победить проблему. Нашел что это из за того что в search.php прописано, не воспринимать знак "-", пробовал менять:
/* Copied from Drupal search module, except for \x{0}-\x{2f} that has been replaced by \x{0}-\x{2c}\x{2e}-\x{2f} in order to keep the char '-' */
define('PREG_CLASS_SEARCH_EXCLUDE',
'[color=red]\x{0}-\x{2c}\x{2e}-\x{2f}[/color]\x{3a}-\x{40}\x{5b}-\x{60}\x{7b}-\x{bf}\x{d7}\x{f7}\x{2b0}-'.
Выделенное красным по идее разрешает знак "-", дальше по тексту убирал отовсюду знак "-", ничего не помогает... другого решения пока не нашел...
if ($indexation) {
            $string = preg_replace('/[._-]+/', ' ', $string);
        } else {
            $words = explode(' ', $string);
            $processed_words = array();
            // search for aliases for each word of the query
            foreach ($words as $word) {
                $alias = new Alias(null, $word);
                if (Validate::isLoadedObject($alias)) {
                    $processed_words[] = $alias->search;
                } else {
                    $processed_words[] = $word;
                }
            }
            $string = implode(' ', $processed_words);
            $string = preg_replace('/[._]+/', '', $string);
            $string = ltrim(preg_replace('/([^ ])-/', '$1 ', ' '.$string));
            $string = preg_replace('/[._]+/', '', $string);
            $string = preg_replace('/[^\s]-+/', '', $string);
        }
На всякий случай вложил оригинал файла search.php который у меня. Подскажите пожалуйста как сделать что бы поиск нормально воспринимал знак "-" (тире). Так в остальном поиск работает превосходно, загвоздка только в этом знаке.
10 Январь 2018, 16:31:31
Ответ #1
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Из preg_replace удалите знак "-".
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
10 Январь 2018, 16:51:25
Ответ #2
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо. Сделал, и опять не работает... И тут осенила мысль сделать переиндексацию. Заработало ))). Спасибо.
16 Июнь 2019, 22:37:11
Ответ #3
  • Фрилансер
  • *
  • Сообщений: 206
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
подскажите где находится этот файл search.php ?
17 Июнь 2019, 09:20:42
Ответ #4
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.