prowebber.ru - Тут есть все для настоящих вебмастеров

Чтение RSS Мы в твиттере
«    Декабрь 2016    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 

Всё для вебмастера » Всё для DataLife Engine » DLE хаки » Понятный быстрый поиск

Понятный быстрый поиск


Данный материал предоставлен сайтом ProWebber.ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
У нас вы можете скачать бесплатно Понятный быстрый поиск.


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


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

открываем /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"
указана начальная часть строки

///////ниже дописываем
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");
}


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

пример работы на http://kinomax.by


+18
Просмотры: 6594 VIP ProWebber | Комментарии (26)
Теги: Хак, дле, dle
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#1Feniks000

  • 22 декабря 2013 10:58
  • Регистрация: 21.09.2013
  • ICQ: --
  • Комментариев: 14
Зачем делать аналог кинопоиска? Все равно никогда не опередишь dash

Я про шаблон.

-5

#2serik52

  • 22 декабря 2013 12:25
  • Регистрация: 27.12.2010
  • ICQ: --
  • Комментариев: 22
Ага, и пример на сайт, на котором "Гости не могут использовать поиск по сайту."...

+1

#3Eugeny Venegrad

  • 22 декабря 2013 14:08
  • Регистрация: 23.11.2013
  • ICQ: --
  • Комментариев: 8
  • Выкл.
Отличный хак, только вот не понимаю за что минус...

0

#4D0Gmatist

  • 22 декабря 2013 14:59
  • Регистрация: 28.07.2012
  • ICQ: --
  • Комментариев: 297
  • Выкл.
serik52, сори забыл включить обратно .. после того как переделывал быстрый поиск

--------------------

-1

#5G-3p

  • 22 декабря 2013 16:44
  • Регистрация: 11.12.2013
  • ICQ: --
  • Комментариев: 83
D0Gmatist,
Не работает(

0

#6kazinak

  • 22 декабря 2013 17:10
  • Регистрация: 12.04.2013
  • ICQ: 695140264
  • Комментариев: 16
Благодарю, отличное решение этой не большой проблемы. На DLE 10.1 работает!

0

#7G-3p

  • 22 декабря 2013 17:14
  • Регистрация: 11.12.2013
  • ICQ: --
  • Комментариев: 83
kazinak,
Хм.... Ещё раз попробую....

0

#8vitnet

  • 22 декабря 2013 17:53
  • Регистрация: 18.09.2010
  • ICQ: 8060715
  • Комментариев: 304
Спасибо все отлично работает, правда я себе немного подправил теперь работает в обе стороны

0

#9D0Gmatist

  • 22 декабря 2013 17:56
  • Регистрация: 28.07.2012
  • ICQ: --
  • Комментариев: 297
  • Выкл.
Поделись примером ))) ...

--------------------

-1

#10vitnet

  • 22 декабря 2013 17:57
  • Регистрация: 18.09.2010
  • ICQ: 8060715
  • Комментариев: 304
http://quantum-soft.ru/dle/xacks/58281-uchim-bystryy-poisk-raspoznavat-vse-vvede
nnye-simvoly.html

Кто автор?

0

#11D0Gmatist

  • 22 декабря 2013 18:14
  • Регистрация: 28.07.2012
  • ICQ: --
  • Комментариев: 297
  • Выкл.
Там в принципе всё тоже самое, толь ка как по мне лишняя
function {
array
}
которая заменяет русские символы на англ.

--------------------

-2

#12ПафНутиЙ

  • 23 декабря 2013 02:54
  • Регистрация: 8.03.2010
  • ICQ: 817233
  • Комментариев: 400
D0Gmatist,
Хорошая попытка) я уж думал, что у меня на сайте много лишнего, раз только правила смены раскладок и отлова опечаток на 70кб расписаны.
Оказывается нет, не лишнее: http://prntscr.com/2d87cr

--------------------

0

#13D0Gmatist

  • 23 декабря 2013 04:40
  • Регистрация: 28.07.2012
  • ICQ: --
  • Комментариев: 297
  • Выкл.
ПафНутиЙ,
ну для этого и выложил в паблик .. что бы люди тестировали и показывали на недочёты ... и этим помогут доработать (довести до ума) .. чем и буду заниматься
и развивать тему
а по честному ... давно пора бы разработчикам ДЛЕ внедрить
http://ru.wikipedia.org/wiki/Sphinx_(поисковая_система)

решение было элиментарным
http://prntscr.com/2d8yqc

а вот по поводу опечаток ...
к примеру ввёл
ЛЯГУГКА и БД запрос проходит делая каждый символ как %

и выдаёт как самый близкий ЛЯГУШКА

что в принципе и делает
http://ru.wikipedia.org/wiki/Sphinx_(поисковая_система) ... но при этом скорость и нагрузка на БД минимальная

так что отлов опечаток это очень важная тема )))

--------------------

-2

#14D0Gmatist

  • 23 декабря 2013 05:02
  • Регистрация: 28.07.2012
  • ICQ: --
  • Комментариев: 297
  • Выкл.
С учётом обнаруженных косяков .. сделан новый (обновлённый вариант)

скачать можно по адресу
http://kinomax.by/uploads/pablick.txt

--------------------

0

#15ПафНутиЙ

  • 23 декабря 2013 10:22
  • Регистрация: 8.03.2010
  • ICQ: 817233
  • Комментариев: 400
Цитата: D0Gmatist
ну для этого и выложил в паблик .. что бы люди тестировали и показывали на недочёты ...

Всё правильно! Гораздо лучше чем продавать шлак за копейки!
Так в итоге найдётся правильное решение, которое можно продавать, а самым активным и подарить не жалко)

--------------------

0

#16Sander

  • 23 декабря 2013 16:36
  • Регистрация: 19.02.2010
  • ICQ: 404037556
  • Комментариев: 324
Ну и я немножко поучаствую :)
1. Функцию лучше вставлять возле строки:
$buffer = "";


2. Нет необходимости дублировать весь код вывода, если можно подправить сам запрос.
После вставленной функции прописать код:
$queryT = translitEnRu($query);


И подправить сам запрос, найти код:
(short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR title LIKE '%{$query}%')

И заменить его на:
(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}%')


Но я бы конечно рекомендовал ограничить поиск только по заголовку:
(title LIKE '%{$query}%' OR title LIKE '%{$queryT}%')

Ну или с short_story:
(short_story LIKE '%{$query}%' OR title LIKE '%{$query}%' OR short_story LIKE '%{$queryT}%' OR title LIKE '%{$queryT}%')

--------------------

+3

#17D0Gmatist

  • 23 декабря 2013 16:56
  • Регистрация: 28.07.2012
  • ICQ: --
  • Комментариев: 297
  • Выкл.
Я к стати забыл совсем что там поиск идёт по нескольким полям ... что и впрямь можно уменьшить ... чем повыситься скорость

Цитата: Sander
Функцию лучше вставлять возле строки:

а функцию можно вообще вставить в /modules/functions.php ... что будет уж вааааабще правильно )))

--------------------

-1

#18G-3p

  • 23 декабря 2013 17:14
  • Регистрация: 11.12.2013
  • ICQ: --
  • Комментариев: 83
D0Gmatist,
Так много придумали)
А можно конечный результат ваших размышлений в студию?

0

#19Sander

  • 23 декабря 2013 20:38
  • Регистрация: 19.02.2010
  • ICQ: 404037556
  • Комментариев: 324
D0Gmatist,
Это не будет так уж и правильным...
По большому счету тут можно обойтись вообще без функции. Было бы правильным прописывать функцию в functions.php если бы она вызывалась в нескольких местах, хотябы еще в engine/modules/search.php.

--------------------

0

#20vurdik

  • 27 декабря 2013 03:04
  • Регистрация: 9.10.2011
  • ICQ: --
  • Комментариев: 30
Спасибо, попробуем

0
1 2
Предыдущая    Следующая
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.

Max-energy.top - Заработок на электросчетчиках;)

Skripters.info - все для вебмастера. Только эксклюзивный контент.

Создание шаблонов DLE, быстро и недорого! 3wave.com.ua

Бро лей на лучшую партнёрку

Почти бесплатный VDS хостинг!

делаю татуаж губ

vk.com


Страх и темноты смотреть фильм онлайн тут

smotri-online.net


Поддержи сайт
Скрипты, cms, шаблоны, статьи по раскрутке

Опросы

Как часто вы бываете на сайте?

Захожу 1-2 раза в день
1-2 часа в сутки
Более 2 часов
Почти целый день тут smile

Архив новостей
Ноябрь 2016 (7)
Октябрь 2016 (10)
Сентябрь 2016 (8)
Август 2016 (11)
Июль 2016 (14)
Июнь 2016 (17)

Последние комментарии:

Искать людей

Ваши переписки