DevCraft - Разработка приложений

Приветствую!

Это новый и обновлённый сайт maxim-harder.de! Если вы были зарегистрированы на старом сайте, то восстановите свой пароль на сайте!

Создай свой аккаунт!

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

Maxim

Интересующийся
Команда форума

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%
Версия DLE
10.х
1499632676_1473704748_2016-09-12_20-24-371.png
Наверное многие замечали на сайтах, что когда задаёшь поисковой запрос в строчке, то результат поиска будет содержать в себе не только название искомого, но и изображение, постер, к этой статье.
Предлагаю 2 варианта реализации сего хака: через дополнительное поле и из короткой новости.

Начнём с доп. поля.
Открываем файл engine/ajax/search.php

ищем
PHP:
$db->query("SELECT id, short_story, title, date,
далее добавляем
xfields,
у нас получается
PHP:
$db->query("SELECT id, short_story, title, date, xfields, alt_name, category
ищем
PHP:
$description = preg_replace( "'\[attachment=(.*?)\]'si", "", $description );
ниже ставим
PHP:
$xf = xfieldsdataload( $row['xfields'] );
ищем
PHP:
$buffer .= "<a href=\"" . $full_link . "\">
добавляем после
PHP:
<img src=\"".$xf['poster']."\" style=\"float:left; max-width:50px; margin-right:5px;\">
у нас получится
PHP:
$buffer .= "<a href=\"" . $full_link . "\"><img src=\"".$xf['poster']."\" style=\"float:left; max-width:50px; margin-right:5px;\">
$xf['poster'] - тут poster меняем на своё значение поля

для вывода из краткой новости
Открываем файл engine/ajax/search.php
ищем
PHP:
        $row['category'] = intval( $row['category'] );
ниже ставим
PHP:
        $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";

        }
$config['http_home_url'] . templates/" . $config['skin'] . "/dleimages/no_image.jpg
тут, либо ты кидаем в папку dleimages своего шаблона заглушку no_image.jpg, либо заменяем на свою
ищем
PHP:
$buffer .= "<a href=\"" . $full_link . "\">
меняем на
PHP:
$buffer .= "<a href=\"" . $full_link . "\"><img src=\"" . $image . "\" alt=\"" . stripslashes( $title ) . "\" title=\"" . stripslashes( $title ) . "\" style=\"float: left;width: 70px;height: auto;margin: 0px 3px 3px 0px;\">
Радуемся ))) Метод не новый, будет работать на версиях 9.х -11.х
 

Maxim

Интересующийся
Команда форума

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%
Вопрос: Как изменить внешний вид выпадающего списка?
Проделываем выше указанные инструкции до пункта с xf

далее, ищем и заменяем этот код:
PHP:
$buffer .= "<a href=\"" . $full_link . "\"><span class=\"searchheading\">" . stripslashes( $title ) . "</span>";

        $buffer .= "<span>".$description."</span></a>";
на
PHP:
        $buffer .= "<div class=\"search-quick-item\" id=\"{$row['id']}\">
    <a href=\"{$full_link}\">
        <span class=\"\">
            <img src=\"{$xf['poster']}\" class=\"poster\">
        </span>
        <div class=\"right\">
            <div class=\"title\">{$title}</div>";
        if (!empty($xf['original']) && isset($xf['original']))
            $buffer .= "<div class=\"original-title\">{$xf['original']}</div>";
        $buffer.= "<div>
                <span class=\"year\">{$xf['year']}</span>
                <span class=\"category\">{$cat_info[$row['category']]['name']}</span>
            </div>
        </div>
    </a>
</div>";
далее ищем и меняем
PHP:
$buffer .= '<span class="seperator"><a href="'.$config['http_home_url'].'?do=search&amp;mode=advanced&amp;subaction=search&amp;story='.$query.'">'.$lang['s_ffullstart'].'</a></span><br class="break" />';
на
PHP:
$buffer .= '<a href="'.$config['http_home_url'].'?do=search&amp;mode=advanced&amp;subaction=search&amp;story='.$query.'" class="showAllResults">'.$lang['s_ffullstart'].'</a>';
и наконец меняем
PHP:
echo $buffer;
на
PHP:
echo '<div class="searchResults">' . $buffer . '</div>';
Вот и стили
CSS:
.searchResults {
    top: 60px;
    left: 1px;
    width: 480px;
    height: auto;
    z-index: 500;
    font-size: 0;
    display: none;
    line-height: 0;
    position: absolute;
    box-shadow: 0 19px 29px rgba(0,0,0,0.2);
}

.searchResults.opened {
    display: block;
}

.searchResults .search-quick-item {
    height: auto;
    font-size: 0;
    cursor: default;
    background: white;
    position: relative;
    display: inline-block;
    padding: 20px 23px 17px 20px;
    box-shadow: inset 0 -1px 0 0 #efefef;
}

.searchResults .showAllResults {
    color: #f26739;
    height: 40px;
    display: block;
    padding: 0 20px;
    font-size: 14px;
    background: #fff;
    font-weight: 400;
    line-height: 40px;
}

.searchResults .search-quick-item a {
    display: inline-block;
}

.searchResults .search-quick-item .right {
    float: left;
    width: 377px;
    margin-left: 20px;
    line-height: 20px;
    vertical-align: top;
}

.searchResults .search-quick-item .poster {
    width: 40px;
    float: left;
    height: 60px;
}

.searchResults .search-quick-item .right .title {
    top: -3px;
    color: #292c33;
    font-size: 20px;
    font-weight: 700;
    line-height: 20px;
    position: relative;
}

.searchResults .search-quick-item .right .original-title {
    color: #8f95a3;
    font-size: 14px;
    font-weight: 500;
}

.searchResults .search-quick-item .right .year,
.searchResults .search-quick-item .right .category {
    margin-right: 5px;
}
значения меняем все под себя

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

redflamegroup

Новичок

redflamegroup

Новичок
Реакции
0% 0% 0%
А как вставить уменьшенную версию изображений для поле {$xf['poster']} а то он даёт вот такой результат /2017-11/88_nekojiru-so.jpg а для уменьшенной копии (thumb) нужно добавить в ссылку директорию /2019-10/thumb/58488_nekojiru-so.jpg


вот разница
/2017-11/88_nekojiru-so.jpg
/2017-11/thumb/88_nekojiru-so.jpg


как реализовать ?
 

Maxim

Интересующийся
Команда форума

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%
@redflamegroup, как выглядит значение в поле?
 

Maxim

Интересующийся
Команда форума

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%
@redflamegroup, гляну, что можно будет сделать, но не до 11. Ноября. Мне нужно сдать документацию к проекту для допуска к экзамену
 

Верх