Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Вывод постера в результатах быстрого поиска

Вывод постера в результатах быстрого поиска


     25.05.2013    Ajax, search, poster    Все вопросы » Общие вопросы по PHP    5669

вопрос
Прошу прощения если нашли ошибки в тексте - быстро писал.

Привет, у меня вот недавно появилась идея, вот ее суть.

Мне хотелось вывести постер новости в результатах быстрого поиска я делал так:

в engine/ajax/search.php


$img = $db->super_query( "SELECT images, news_id FROM " . PREFIX . "_posters where news_id = '{$row['id']}'" );


и чуть ниже выводил постер таким образом


$buffer .= "<span><img src=\"/uploads/posts/posters/"[b].$img['images'].[/b]"\" style=\"width: 30px;height: 40px;\">".$description."</span></a>";


При вводе ключевого слово в поиске то он выводит уже найденную новость и с постером но только выводит по 1 новости.

P.S у меня есть так скажем модуль для загрузки картинок на сервер и вывожу картинки в новость тегом {poster}

Если кому еще пригодиться то вот пример как вывести дополнительные поля и имя категории чей принадлежит найденый ресурс в поиске.


Заменяем $buffer .= "<a href=\"" . $full_link . "\"><span class=\"searchheading\">" . stripslashes( $title ) ."</span>

На $buffer .= "<a href=\"" . $full_link . "\"><span class=\"searchheading\">" . stripslashes( $title ) ." <span class=\"cat\">".$cat_info[$row['category']]['name']." </span></span>";


и в ряду с названием появиться категория новости

Чтобы вывести дополнительные поля делаем так


После $description = preg_replace( "'\[attachment=(.*?)\]'si", "", $description );

Вставляем $xfieldsdata = xfieldsdataload( $row['xfields'] );
и уже в нужном месте ".$xfieldsdata['image']."


['image'] - image название дополнительного поля.

Ответил: dj-avtosh


Я бы реализовал так

Нашел бы


$db->query("SELECT id, short_story, title, date, alt_name, category, flag 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");


заменил бы на



$db->query("SELECT p.id, p.short_story, p.title, p.date, p.alt_name, p.category, p.flag, pr.images as images

FROM " . PREFIX . "_post p

LEFT JOIN " . PREFIX . "_posters pr

ON ( p.id = pr.news_id )

WHERE

p.approve=1

".$this_date."

AND

( p.short_story LIKE '%{$query}%' OR p.full_story LIKE '%{$query}%' OR p.xfields LIKE '%{$query}%' OR p.title LIKE '%{$query}%')

ORDER by p.date DESC LIMIT 5");





И ваша дальнейшая конструкция должна заработать

вместо $img - $row


$buffer .= "<span><img src=\"/uploads/posts/posters/"[b].$row['images'].[/b]"\" style=\"width: 30px;height: 40px;\">".$description."</span></a>";

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

FastFud
Юзер

FastFud - 25 мая 2013 16:44 -

Пишет что база данных ex bs.posters не существует, бред.

dj-avtosh
PHP-developer

dj-avtosh - 25 мая 2013 16:47 -

LEFT JOIN ".PREFIX."posters pr


попробуйте

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

FastFud
Юзер

FastFud - 25 мая 2013 19:38 -

тоже так

FastFud
Юзер

FastFud - 25 мая 2013 19:47 -

Да, и еще чтобы заработали дополнительные поля в результатах поиска надо прописать в


$db->query("SELECT id, short_story, title, date, alt_name, category, flag 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 можно после category,

FastFud
Юзер

FastFud - 25 мая 2013 20:13 -

***Комментарий удален***

dj-avtosh
PHP-developer

dj-avtosh - 25 мая 2013 20:13 -

ему нужны были не доп поля, а posters с таблицы

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

dj-avtosh
PHP-developer

dj-avtosh - 25 мая 2013 20:17 -

Я скинул запросы, в чем ошибки??

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

dj-avtosh
PHP-developer

dj-avtosh - 25 мая 2013 20:18 -

" . PREFIX . "_posters


вот так

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

FastFud
Юзер

FastFud - 25 мая 2013 20:36 -

Теперь пишет так: Unknown column 'pr.images' in "field list'

dj-avtosh
PHP-developer

dj-avtosh - 25 мая 2013 20:48 -

$db->query("SELECT p.id, p.short_story, p.title, p.date, p.alt_name, p.category, p.flag, pr.images as images

FROM " . PREFIX . "_post p

LEFT JOIN " . PREFIX . "_posters pr

ON ( p.id = pr.news_id )

WHERE

p.approve=1

".$this_date."

AND

( p.short_story LIKE '%{$query}%' OR p.full_story LIKE '%{$query}%' OR p.xfields LIKE '%{$query}%' OR p.title LIKE '%{$query}%')

ORDER by p.date DESC LIMIT 5");



Должно быть в точности как тут

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

FastFud
Юзер

FastFud - 25 мая 2013 20:52 -

Unknown column 'dle_post.date' in 'where clause'

dj-avtosh
PHP-developer

dj-avtosh - 25 мая 2013 20:55 -

if( intval( $config['no_date'] ) ) $this_date = " AND " . PREFIX . "_post.date < '" . $this_date . "'"; else $this_date = "";


на

if( intval( $config['no_date'] ) ) $this_date = " AND p.date < '" . $this_date . "'"; else $this_date = "";

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

FastFud
Юзер

FastFud - 25 мая 2013 20:59 -

.dj-avtosh,


if( intval( $config['no_date'] ) ) $this_date = " AND " . PREFIX . "_post.date < '" . $this_date . "'"; else $this_date = "";


нету такого

dj-avtosh
PHP-developer

dj-avtosh - 25 мая 2013 21:01 -

прямо над запросом

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

FastFud
Юзер

FastFud - 25 мая 2013 21:05 -

Тоже по 1 новости показывает.

dj-avtosh
PHP-developer

dj-avtosh - 25 мая 2013 21:06 -

сказки, быть такого не может

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

FastFud
Юзер

FastFud - 25 мая 2013 21:07 -

Чистая правда так и выводит.

FastFud
Юзер

FastFud - 25 мая 2013 21:36 -

Огромное спасибо.

Вот как надо сделать правельно :

if( intval( $config['no_date'] ) ) $this_date = " AND " . PREFIX . "_post.date < '" . $this_date . "'"; else $this_date = "";


на

if( intval( $config['no_date'] ) ) $this_date = " AND p.date < '" . $this_date . "'"; else $this_date = "";


потом удалить нахр...


$row = $db->super_query( "SELECT images, news_id FROM " . PREFIX . "_posters where news_id = '{$row['id']}'" );


и чтобы вывести ниже в


$buffer .= "<span>".$description."</span></a>";

вставить уже <img src=\"/uploads/posts/posters/".$row['images']."\" style=\"width: 30px;height: 40px;\">


и заработает как миленький и вуаля у вас будет офигенный поиск.

FastFud
Юзер

FastFud - 25 мая 2013 21:38 -

Не забудьте заменить


$db->query("SELECT id, short_story, title, date, alt_name, category, flag 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");


на


$db->query("SELECT p.id, p.short_story, p.title, p.date, p.alt_name, p.category, p.flag, pr.images as images

FROM " . PREFIX . "_post p

LEFT JOIN " . PREFIX . "_posters pr

ON ( p.id = pr.news_id )

WHERE

p.approve=1

".$this_date."

AND

( p.short_story LIKE '%{$query}%' OR p.full_story LIKE '%{$query}%' OR p.xfields LIKE '%{$query}%' OR p.title LIKE '%{$query}%')

ORDER by p.date DESC LIMIT 5");

DarAmal
Юзер

DarAmal - 9 декабря 2013 22:26 -

а как реализовать на DLE 9.8 ? помогите пожалуйста!
у меня к примеру нет таких кодов, как:
$row = $db->super_query( "SELECT images, news_id FROM " . PREFIX . "_posters where news_id = '{$row['id']}'" );

и
if( intval( $config['no_date'] ) ) $this_date = " AND " . PREFIX . "_post.date < '" . $this_date . "'"; else $this_date = "";


Подскажите , пожалуйста!
Заранее благодарю!!

vitnet
PHP-developer

vitnet - 9 декабря 2013 22:49 -

найти
while($row = $db->get_row()) {

    $row['date'] = strtotime( $row['date'] );
    $row['category'] = intval( $row['category'] );

заменить на
while($row = $db->get_row()) {

    $row['date'] = strtotime( $row['date'] );
    $row['category'] = intval( $row['category'] );

    $short_story = stripslashes($row['short_story']);
    $images = array();
    preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $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) ) {
        $image = $url;
    } else {
        $image = $config['http_home_url'] . "templates/" . $config['skin'] . "/dleimages/no_image.jpg";
    }

найти
$buffer .= "<a href=\"" . $full_link . "\"><span class=\"searchheading\">" . stripslashes( $title ) . "</span>";

в нем использовать
<img src=\"" . $image . "\" width=\"20\" height=\"20\" alt=\"\" style=\"float: left; margin-top: 3px; padding: 2px;\" title=\"" . stripslashes( $related['title'] ) . "\">


V2 ссылка

x0x0x7
Юзер

x0x0x7 - 20 марта 2017 21:36 -

А как вывести доп. поля вместо описания фильма, у меня прст киносайт, допумтим вот шаблон:
| Название
постер | Год фильма
| Категория

Могли бы в ICQ поговорить) но для народа думаю тоже будет полезно)

x0x0x7
Юзер

x0x0x7 - 20 марта 2017 21:41 -

А как вывести доп. поля вместо описания фильма, у меня прст киносайт, допумтим вот шаблон:

1. Постер
2. Напротив постера, поля {title}, [year], [director], {category}

{title} - название фильма
[year] - год фильма [доп. поле]
[director] - режиссер фильма [доп. поле]
{category} - жанр фильма

Могли бы в ICQ поговорить) но для народа думаю тоже будет полезно)

denibox
Юзер

denibox - 24 августа 2019 07:52 -

Здравствуйте.

Подскажите пожалуйста как можно заменить картинку в быстром поиске если она не была загружена к материалу.

Картинка в search.php выводиться так .
$xfieldsdata['image_small']

Что нужно добить если картинки нет чтобы была ей замена допустим картинка постер отсутствует. Спасибо.

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

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

наверх