Всем привет, давно не писал полезных уроков для сайта, пора исправятся. Сегодня столкнулся с проблемой на DLE, когда мне нужно было реализовать вывод картинок которые расположены в дополнительных полях в быстром поиске. Странно конечно что это нельзя сделать по-умолчанию, ведь поиск без картинок не такой уж и полезный и больше похож на какой-то кастрированный
Как же реализовать быстрый поиск с картинками на DLE из дополнительных полей?1. Заходим в файл
/engine/ajax/search.php2. Ищем код:
$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");
И добавляем в запрос дополнительное поле
"xfields" или для ленивый заменяем на этот код:
$db->query("SELECT id, short_story, title, date, xfields, 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");
3. Ищем строку:
$description = preg_replace( "'\[attachment=(.*?)\]'si", "", $description );
Ниже вставляем:
$xfieldsdata = xfieldsdataload( $row['xfields'] );
4. И последний шаг, который как раз и будет выводить из дополнительных полей DLE картинку в быстром поиске, ищем:
$buffer .= "<span>".$description."</span></a>";
Заменяем на:
$buffer .= "<span><img width=\"50px\" height=\"50px\" src=\"".$xfieldsdata['НАЗВАНИЕ ВАШЕГО ДОПОЛНИТЕЛЬНОГО ПОЛЯ']."\" class=\"poster\" style=\"float:left; margin:5px;\">".$description."</span></a>";
Обратите внимание, что в коде нужно заменить
НАЗВАНИЕ ВАШЕГО ДОПОЛНИТЕЛЬНОГО ПОЛЯ, например на img или images (нужно указать именно так как вы назвали ваше доп. поле).
Вот и все! Ждите новых уроков!