Понятный быстрый поиск » Techno-Co — Всё для вебмастера, для создание сайтов с нуля. {title}
В стандартном быстром поиске по сайту нет такой полезной вещи как транслит. Бывает ввожу английскими буквами русские слова. И дабы поиск смог понять что я от него хочу, было найдено оригинальное решение в виде хака.При поиске будет происходить 1 запрос в базу данных, так как будет происходить проверка по транслиту.
Установка:
Открыть файл /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);
}
Найти далее:
if ( !$buffer ) $buffer .= "{$lang['related_not_found']}";
Заменить на:
if ( !$buffer ) {
$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");
while($row = $db->get_row()){
$row['date'] = strtotime( $row['date'] );
$row['category'] = intval( $row['category'] );
if( $config['allow_alt_url'] == "yes" ) {
if( $config['seo_type'] == 1 OR $config['seo_type'] == 2 ) {
if( $row['category'] and $config['seo_type'] == 2 ) {
$full_link = $config['http_home_url'] . get_url( $row['category'] ) . "/" . $row['id'] . "-" . $row['alt_name'] . ".html";
} else {
$full_link = $config['http_home_url'] . $row['id'] . "-" . $row['alt_name'] . ".html";
}
} else {
$full_link = $config['http_home_url'] . date( 'Y/m/d/', $row['date'] ) . $row['alt_name'] . ".html";
}
} else {
$full_link = $config['http_home_url'] . "index.php?newsid=" . $row['id'];
}
$row['title'] = stripslashes($row['title']);
if( dle_strlen( $row['title'], $config['charset'] ) > 43 ) $title = dle_substr( $row['title'], 0, 43, $config['charset'] ) . " ...";
else $title = $row['title'];
$row['short_story'] = trim (htmlspecialchars( strip_tags( stripslashes( str_replace( array("
", " "), " ", $row['short_story'] ) ) ), ENT_QUOTES, $config['charset'] ) );
if( $user_group[$member_id['user_group']]['allow_hide'] ) $row['short_story'] = str_ireplace( "[hide]", "", str_ireplace( "[/hide]", "", $row['short_story']) );
else $row['short_story'] = preg_replace ( "#[hide](.+?)[/hide]#is", "", $row['short_story'] );
if( dle_strlen( $row['short_story'], $config['charset'] ) > 150 ) $description = dle_substr( $row['short_story'], 0, 150, $config['charset'] ) . " ...";
else $description = $row['short_story'];
$description = str_replace('&', '&', $description);
$description = preg_replace( "'[attachment=(.*?)]'si", "", $description );
$buffer .= "";
}
if ( !$buffer ) $buffer .= "{$lang['related_not_found']}";
}
Готово!
Версия DLE: 10.х
Автор: D0Gmatist
Комментарии 0