» » » Понятный быстрый поиск [DLE 9.x - 10.x]

Понятный быстрый поиск [DLE 9.x - 10.x]

Название: Понятный быстрый поиск
Автор: D0Gmatist
CMS: DLE

Описание:
В стандартном быстром поиске нет полезной вещи как транслит. Бывает что ввожу английскими буквами русское слова, дабы поиск смог понять что я от него хочу. Я нашёл для себя решение и решил поделиться с Вами.




открываем /engine/ajax/search.php

///////находим строчку
 
$db->free();
}




///////ниже дописываем:
function translitEnRu($string) {

$converter = array(

'`' => 'ё',	 'q' => 'й',	 'w' => 'ц',	 'e' => 'у',

'r' => 'к',	 't' => 'е',	 'y' => 'н',	 'u' => 'г',

'i' => 'ш',	 'o' => 'щ',	 'p' => 'з',	 '[' => 'х',

']' => 'ъ',	 'a' => 'ф', 's' => 'ы',  'd' => 'в',
'f' => 'а',	 'g' => 'п',	 'h' => 'р',	  'j' => 'о',
'k' => 'л',	 'l' => 'д',	 ';' => 'ж',	  '\'' => 'э',
'z' => 'я',	 'x' => 'ч',	 'c' => 'с',	  'v' => 'м',
'b' => 'и',	 'n' => 'т',	 'm' => 'ь',  ',' => 'б',
'.' => 'ю',

'~' => 'Ё',	 'Q' => 'Й',	 'W' => 'Ц',      'E' => 'У',
'R' => 'К',	 'T' => 'Е',	       'Y' => 'Н',	       'U' => 'Г',
'I' => 'Ш',	 'O' => 'Щ',	 'P' => 'З',	       '{' => 'Х',
'}' => 'Ъ',	 'A' => 'Ф',	 'S' => 'Ы',	 'D' => 'В',
'F' => 'А',	 'G' => 'П',	 'H' => 'Р',	 'J' => 'О',
'K' => 'Л',	 'L' => 'Д',	       ':' => 'Ж',	       '"' => 'Э',
'Z' => 'Я',	 'X' => 'Ч',	 'C' => 'С',	 'V' => 'М',
'B' => 'И',	 'N' => 'Т',	 'M' => 'Ь',	 '<' => 'Б',
'>' => 'Ю',

);

return strtr($string, $converter);

}



///////Далее находим строчку:
$db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1".$this_date." AND (short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR title LIKE '%{$query}%') ORDER by date DESC LIMIT 5");


///////заменить:
$queryT = translitEnRu($query);

$db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1".$this_date." AND (short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR title LIKE '%{$query}%' OR short_story LIKE '%{$queryT}%' OR full_story LIKE '%{$queryT}%' OR xfields LIKE '%{$queryT}%' OR title LIKE '%{$queryT}%') ORDER by date DESC LIMIT 5");


Готово.
Увеличивается (если по русскому языку не даёт результата) +1 запрос в БД .. так как будет происходить проверка по транслиту.

Новость отредактировал: Gameer

Причина: Фикс для быстрого поиска.
DLE


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии

4

Kota

Посетители 23 декабря 2013 18:08
Оооо спасибо)))
4

laidman

Посетители 26 декабря 2013 06:31
Хотелось бы данную функцию и туда и сюда что бы верные слова были.
4
При данном хаке становиться невозможно искать на что-либо в быстром поиске на английском языке! Всегда будет переводить на русский!
4

Ashot

Посетители 28 декабря 2013 03:37
Цитата: Alexh2o345
При данном хаке становиться невозможно искать на что-либо в быстром поиске на английском языке! Всегда будет переводить на русский!

Да Вы правы,автор хака выпустил более новую версию, тем самым исправил данный баг.
Скачать можно отсюда: http://yadi.sk/d/CIZCa6SQF6AXk
4
хорошая штука!!

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.