Войти на сайт Регистрация
Добавить шаблон В каталоге: 578
Fance.ru
Понятный быстрый поиск для DLE
22.12.2013
  • 567 Просмотров:
  • 0 Скачиваний:
  • 0 Комментариев:
  • 0.0 Рейтинг:
  • (Голосов: 0)
Описание:
Итак, предлагаю вашему вниманию небольшой хак с транслитом для DLE. В стандартном быстром поиске нет полезной вещи как транслит .. бывает что ввожу английскими буквами русское слова ... дабы поиск смог понять что я от него хочу .. я нашёл для себя решение и решил поделиться с Вами...

и так начнём...

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

///////находим строчку

Код
set_vars( "category", $cat_info );
  $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"


указана начальная часть строки

///////ниже дописываем

[code]if (!$db->get_row()) {
$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 '%{$queryT}%' OR full_story LIKE '%{$queryT}%' OR xfields LIKE '%{$queryT}%' OR title LIKE '%{$queryT}%') ORDER by date DESC LIMIT 5");
}[/code

Готово!
Увеличивается (если по русскому языку не даёт результата) +1 запрос в БД .. так как будет происходить проверка по транслиту
Источник: www.Fance.ru
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]