Рассматриваемая проблема – некорректная работа поиска по магазину, если в поисковом запросе встречаются русские буквы – поиск не находит товаров, возвращая пустой результат. Путём перехвата запросов, выясняем что имеет место быть искажение кириллических символов на этапе формирования 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'))).'%');
|