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

Как сделать поиск по дополнительным полям только из определенных категорий?


     20.01.2019    Общие вопросы по PHP, Хаки    368

вопрос
Как сделать, чтобы при поиске по дополнительным полям (значения используются как перекрестные ссылки) на странице /xfsearch/pole/bla-bla выводились новости только из двух категорий с id 2 и 3?

Ответил: PunPun


В /engine/engine.php найти
if (count ( $xf_array )) {
Выше вставить

1. Для всех доп полей будет только категория с id 2 и 3.
$stop_list = "category regexp '[[:<:]](2|3)[[:>:]]' AND ";


2. Для определенного доп. поля
if ($xfname == 'pole') {
    $stop_list = "category regexp '[[:<:]](2|3)[[:>:]]' AND ";
}


3. Для определенного доп. поля и его значения
if ($_GET['xf'] == 'pole/bla-bla/') {
    $stop_list = "category regexp '[[:<:]](2|3)[[:>:]]' AND ";
}

5 комментариев

maks
Юзер

maks - 24 января 2019 14:52 -

Можно пункт 2 несколько раз использовать?

if ($xfname == 'pole') {
    $stop_list = "category regexp '[[:<:]](2|3)[[:>:]]' AND ";
}
if ($xfname == 'pole2') {
    $stop_list = "category regexp '[[:<:]](4|5)[[:>:]]' AND ";
}

LazyDev
PHP-developer

LazyDev - 24 января 2019 15:39 -

maks, сколько угодно.

Мой блог: LazyDev.pro

Если мне не интересен вопрос - не помогаю, и за этим по контактам прошу не писать.

super120
Юзер

super120 - 24 января 2019 16:13 -

PUNPUN, Все сработало, спасибо большое

maks
Юзер

maks - 24 января 2019 21:50 -

А несколько полей как можно использовать?

if ($xfname == 'pole', 'pole2') {
    $stop_list = "category regexp '[[:<:]](2|3)[[:>:]]' AND ";
}

LazyDev
PHP-developer

LazyDev - 25 января 2019 14:22 -

Цитата: maks
А несколько полей как можно использовать?

if (in_array($xfname,['pole', 'pole2'])) {
    $stop_list = "category regexp '[[:<:]](2|3)[[:>:]]' AND ";
}

Мой блог: LazyDev.pro

Если мне не интересен вопрос - не помогаю, и за этим по контактам прошу не писать.

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

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

наверх