Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Привью картинка при поиске похожих новостей через админку

Привью картинка при поиске похожих новостей через админку


     29.10.2013    Привью картинка, поиск похожих новостей    Все вопросы » Хаки    2716

вопрос
Доброго времени. При добавлении новостей через админку в dle предусмотрена функция поиска похожих новостей на сайте (дублей), которая осуществляется по заголовку статей.

Вопрос: Подскажите пожалуйста, как сделать так, чтобы при поиске похожих новостей высвечивались не только заголовки, но и картинка из краткой новости?

Ответил: vitnet


engine/ajax/find_relates.php
найти
$db->query( "SELECT id, title, date, category, alt_name, MATCH (title, short_story, full_story, xfields) AGAINST ('$title') as score FROM " . PREFIX . "_post WHERE MATCH (title, short_story, full_story, xfields) AGAINST ('$title') AND approve='1'" . $where . " ORDER BY score DESC, date DESC LIMIT 5" );

заменить на (или дописать в запрос short_story,)
$db->query( "SELECT id, title, short_story, date, category, alt_name, MATCH (title, short_story, full_story, xfields) AGAINST ('$title') as score FROM " . PREFIX . "_post WHERE MATCH (title, short_story, full_story, xfields) AGAINST ('$title') AND approve='1'" . $where . " ORDER BY score DESC, date DESC LIMIT 5" ); // 5 это количество новостей

найти
$news_date = date( 'd-m-Y', $related['date'] );

ниже добавить
    $related['short_story'] = stripslashes($related['short_story']);

    $images = array();
    preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $related['short_story'], $media);
    $data = preg_replace('/(img|src)("|\'|="|=\')(.*)/i', "$3", $media[0]);
    
    foreach($data as $url) {
        $info = pathinfo($url);
        if (isset($info['extension'])) {
            $info['extension'] = strtolower($info['extension']);
            if (($info['extension'] == 'jpg') || ($info['extension'] == 'jpeg') || ($info['extension'] == 'gif') || ($info['extension'] == 'png')) array_push($images, $url);
        }
    }
    
    if ( count($images) ) {
        $i_count=0;
        foreach($images as $url) {
            $i_count++;
            $image = $url;
        }
    } else {
        $image = $config['http_home_url'] . "templates/" . $config['skin'] . "/dleimages/no_image.jpg";
    }

найти
$buffer .= "<div style=\"padding:2px;\">{$d_link}{$news_date} - <a href=\"" . $full_link . "\" target=\"_blank\">" . stripslashes( $related['title'] ) . "</a></div>";

заменить на
$buffer .= "<div style=\"padding:2px;\">{$d_link}{$news_date} - <a href=\"{$image}\" onclick=\"return hs.expand(this)\"><img src=\"{$image}\" width=\"20\" height=\"13\" alt=\"\" title=\"" . stripslashes( $related['title'] ) . "\"></a> <a href=\"" . $full_link . "\" target=\"_blank\">" . stripslashes( $related['title'] ) . "</a></div>";

Готово!
PS: width=\"20\" height=\"13\" - высота и ширина картинки

3 комментария

DanRacer
Юзер

DanRacer - 29 октября 2013 20:48 -

Забыл указать, версия DLE 9.7

dj-avtosh
PHP-developer

dj-avtosh - 30 октября 2013 11:26 -

а если картинок нет в новости, то будет писать и писать в лог сервера ворнинги.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

rambess1984
Юзер

rambess1984 - 11 ноября 2013 16:41 -

а как этужу функционал заставить работать через доп, поле

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх