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

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

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

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

Хак Поиск и быстрый поиск по заголовку

Maxim

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

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%
Версия DLE
10.х
1499632802_1474268841_2016-09-19_08-59-011.png
Данный хак позволит в большей точности отыскать новость по ключу, тобишь по заголовку, а не по всей статье.

Полагаю, это снизит немного нагрузку на сервер (Базу Данных), так как мы будем делать поиск по одному полю таблицы, а не по всей. Допустим, у вас полно данных в доп. полях, то стандартный поиск будет и по ним тоже шурстать.

Удачи!

Открываем engine/ajax/search.php
Ищем:
PHP:
$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");
меняем на:
PHP:
//$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");

$db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1".$this_date." AND (title LIKE '%{$query}%') ORDER by date DESC LIMIT 5");
тем самым, мы говорим быстрому поиску, что нужно искать в заголовках.
Итак, что я сделал? я из поискового запроса удалил
PHP:
short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR
он отвечал за поиск по краткой и полной новости и по доп. полям.

Теперь оптимизируем простой поиск.
Открываем engine/modules/search.php
ищем:
PHP:
if( isset( $_REQUEST['titleonly'] ) ) $titleonly = intval( $_REQUEST['titleonly'] ); else $titleonly = 0;
и меняем на:
PHP:
if( isset( $_REQUEST['titleonly'] ) ) $titleonly = intval( $_REQUEST['titleonly'] ); else $titleonly = 3;
то есть, теперь, когда мы в поисковой строке нажимаем на "искать", то искать будет по заголовку
вместо 3 можно прописать 1 или 2
Вот за что отвечают цифры:
0 => Искать только в статьях (учитываются и описания, и заголовки, и доп. поля)
1 => Искать только в комментариях
2 => Искать только в статических страницах
3 => Искать только в заголовках статей

Удачи!
 

Maxim

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

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%
Как сделать поиск быстрой новости по тайтлу и доп.полю?
открываем engine/ajax/search.php и ищем
PHP:
$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");
в исходном коде это строка 104.

и меняем на
PHP:
$db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1".$this_date." AND (xfields LIKE '%{$query}%' OR title LIKE '%{$query}%') ORDER by date DESC LIMIT 5");
 

Ден

Новичок

Ден

Новичок
Реакции
100% 0% 0%
Выровнял свой поиск по вашей рекомендации по заголовку, коротко ясно и понятно, что куда и почему :) Все работает на ура, спасибо большое за хак
 

Ден

Новичок

Ден

Новичок
Реакции
100% 0% 0%
Есть ли возможность вывода в поиске по аналогу скрина?
 

Maxim

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

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%
@Ден, просто оформить стили
В пхп оформить следующий код для обрамовки
Results:
<div class="searchResults"></div>
а сами вложения, т.е. items выглядят так:
Items:
<div class="search-quick-item" id="ID-Новости">
    <a href="Ссылка на новость">
        <span class="">
            <img src="Ссылка на постер" class="poster">
        </span>
        <div class="right">
            <div class="title">Название новости</div>
            <div class="original-title">Название на английском</div>
            <div>
                <span class="year">Год</span>
                <span class="category">Категория</span>
            </div>
        </div>
    </a>
</div>
и сами стили
Стили:
.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;
}
Встраивай
 

Ден

Новичок

Ден

Новичок
Реакции
100% 0% 0%
В пхп оформить следующий код для обрамовки
Results:
и
Items:
можно ли подробнее куда данный код вставлять?
Со стилями все ясно, а вот первые 2 не пойму
 

Maxim

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

Maxim

Интересующийся
Команда форума
Реакции
100% 0% 0%

lantis

Новичок

lantis

Новичок
Реакции
0% 0% 0%
Добрый день. Не подскажите? DLE 12. (кино)На одном шаблоне поиск работает хорошо. Ставлю другой, в результатах выдает несколько страниц, и даже те, в которых нету поискового ключа. Файлы search.tpl, searchresult.tpl менял с рабочего шаблона, ни че не меняется. Куда копать дальше, фиг знает)
 

Maxim

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

Maxim

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

lantis

Новичок

lantis

Новичок
Реакции
0% 0% 0%
Ок, спасибо. Буду ковыряться)
 

Верх