Пятница, 03.05.2024
TiM
Меню сайта
Категории раздела
Мои статьи [9]
1С Бухгалтерия [1]
Arduino / ATMEGA [10]
ESP8266 [1]
OrangePi PC и Raspberry Pi 2 Model B V1.1 [4]
Шаговые двигатели [1]
PHPProBid [0]
CMS DLE (DataLife Engine) [0]
CMS Joomla [13]
SugarCRM [5]
Базы данных [5]
PHP скрипты [16]
Bash и скрипты [27]
IP АТС Elastix / Asterisk [12]
CentOS [6]
Debian [8]
Lubuntu / LinuxMINT [29]
Windows [28]
Умный дом [1]
Сервера [16]
Natural Selection [1]
System Shock 2 [1]
Форма входа
Главная » Статьи » CMS Joomla

Tienda - решение проблеммы поиска товаров на кириллице

Рассматриваемая проблема – некорректная работа поиска по магазину, если в поисковом запросе встречаются русские буквы – поиск не находит товаров, возвращая пустой результат. Путём перехвата запросов, выясняем что имеет место быть искажение кириллических символов на этапе формирования SQL-выборки. Происходит это в следствии использования функции strtolower() там где нужно использовать её multi-byte аналог mb_strtolower(). Задача отлова бага несколько затрудняется сложностью локализации кода. Но, сложности подобные возникают только при первом использовании, потому следуем инструкциям и экономим время учась на чужом опыте:

Открываем файл administrator/components/com_tienda/models/products.php
Правим строки 50 и 67 (номера могут изменяться в зависимости от версии, потому ориентируемся на исходный код):


Код
  
Было:
50 $key = $this->_db->Quote('%'.$this->_db->getEscaped(trim(strtolower($filter))).'%');
   
67 $key = $this->_db->Quote('%'.$this->_db->getEscaped(trim(strtolower( $filter_namedescription))).'%');

Стало:
50 $key = $this->_db->Quote('%'.$this->_db->getEscaped(trim(mb_strtolower($filter, 'UTF-8'))).'%');
   
67 $key = $this->_db->Quote('%'.$this->_db->getEscaped(trim(mb_strtolower( $filter_namedescription, 'UTF-8'))).'%');
Категория: CMS Joomla | Добавил: Timofey (26.02.2013)
Просмотров: 1068
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
YANDEX
Яндекс.Метрика
Сайты
  • Харьковский Юридический Альянс
  • Оцифровка кинопленки
  • TiM ©
    Харьков 2024