Редактор темы

Реклама
Реклама

Поиск новостей по значению доп-поля в админке dle [хак, бесплатно]

  • Автор темы Автор темы iCooLER
  • Дата начала Дата начала

iCooLER

Кодер
Регистрация
13 Сен 2016
Сообщения
390
Рейтинг реакций
239
Баллы
43
Возраст
31
1/3
Автор темы
XFSearchAdmin
Поиск новостей по значению доп-поля в админ-панели DLE


Снимок.PNG

Данный хак реализовывает возможность поиска по значению дополнительного поля в админ-панели сайта DLE. Хак производит поиск фразы в значении доп-поля. К примеру, если вы задали в значении слово «moscow», а значение доп-поля в новости будет «the moscow calling», то это будет считаться совпадением. Если выбрать доп-поле, но значение оставить пустым, то будет идти поиск новостей, где данное доп-поле не заполнено.

В файле engine/inc/editnews.php
Найти:
PHP:
if( count( $where ) ) {
Выше вставить:
PHP:
$xf_search_name = $db->safesql( trim( strip_tags( stripslashes( $_REQUEST['xf_search_name'] ) ) ) );
$xf_search_value = $db->safesql( trim( strip_tags( stripslashes( $_REQUEST['xf_search_value'] ) ) ) );

$xf_search_list = "";
foreach ( xfieldsload() as $xfield ) $xf_search_list .= '<option value="' . $xfield[0] . '" ' . ( $_REQUEST['xf_search_name'] == $xfield[0] ? "selected" : "" ) . '>' . $xfield[1] . '</option>';

if ( $xf_search_name ) {
    if ( $xf_search_value ) $where[] = "IF( POSITION('" . addslashes( $xf_search_name ) . "|' IN `xfields`) > 0, SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, '" . addslashes( $xf_search_name ) . "|', -1 ), '||', 1 ), 0 ) LIKE '%" . addslashes( $xf_search_value ) . "%'";
        else $where[] = "NOT xfields LIKE '%" . addslashes( $xf_search_name ) . "|%'";
}

Найти:
PHP:
<button onclick="search_submit(0); return(false);" class="btn
Выше вставить:
PHP:
<div class="pb-10">Поиск по значению дополнительного поля:</div>
<div class="form-group">
    <div class="row">
        <div class="col-sm-6">
            <label>Дополнительное поле</label>
            <select class="uniform" data-width="100%" name="xf_search_name" id="xf_search_name">
                <option value="0">--- не выбрано ---</option>
                {$xf_search_list}
            </select>
        </div>

        <div class="col-sm-6">
            <label>Поиск по значению</label>
            <input name="xf_search_value" value="{$xf_search_value}" type="text" class="form-control">
        </div>
    </div>
</div>

P.S: Для DLE 13 прикрепил файл плагина для установки в разделе «Управление плагинами»
 

Вложения

Код:
IF( POSITION('" . addslashes( $xf_search_name ) . "|' IN `xfields`) > 0
Зачем это?
 
Автор темы
Код:
IF( POSITION('" . addslashes( $xf_search_name ) . "|' IN `xfields`) > 0
Зачем это?
Хороший вопрос)) Оно выполняет проверку на наличие доп-поля в xfields. Ты спросишь: «Нафига!?». А я отвечу:

Снимок.PNG
Если мы пытаемся получить значение доп-поля, которого нет в xfields, то возвращается первое доп-поле и его значение. Особо не вникал, может можно сделать лучше, но «зачем трогать то, что и так работает» _)
 
.
 
Последнее редактирование:
iCooLER, спасибо отличный хак! Давно подобное решение искал🙂
 
Есть какая то возможность поиска по доп полю "Да или Нет" ? К примеру выводить все новости когда включено доп поле.
 
Автору большое спасибо! Очень полезный хак, по крайней мере для меня 😀
 

Похожие темы Последние темы Популярные темы

Назад
Сверху