Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Как сделать вывод новостей из архива только из одной категории?

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


     04.01.2015    Общие вопросы по PHP    1387

вопрос
Здравствуйте! Я уже задавал вопрос о том, как в календаре сделать вывод новостей только из одной категории. Вот ссылка на мой вопрос:

https://dle-faq.ru/faq/phpquest/13426-kak-v-kalendare-sdelat-vyvod-novostey-tolko-iz-odnoy-kategorii.html

Теперь в календаре выводятся новости из той категории, что мне нужно. Но когда я кликаю на любую дату - выводятся новости из всех категорий за это число. Как сделать, чтобы новости за это число также выводились из одной категории? Буду благодарен за ответ!

Ответил: Sander


Открыть файл engine/ajax/calendar.php
Найти строку
$sql = "";

После нее вставить:
$where_date .= " AND category regexp '[[:<:]]666[[:>:]]'";

где 666 - ID вашей категории.

Если новости отмечаются только в одной категории, то вставлять лучше строку
$where_date .= " AND category = '666'";

Комментарии пользователей (3)

FastFud
50

1599 | 588

FastFud - 4 января 2015 09:39 - Юзер

Найти:
$tpl->result['calendar'] = dle_cache( "calendar", $cache_id );
if( ! $tpl->result['calendar'] ) {
и ниже добавить
$where_cat .= " AND category = '666'";
далее, найти ниже 2 запроса
$sql = "SELECT DISTINCT DAYOFMONTH(date)
в эти запроса
ПОСЛЕ
$where_date
ДОБАВИТЬ
. $where_cat
Очистить кэш в админпанели.

P.S. я не пробовал так что не уверен что будет работать.

Shobo
1

Shobo - 4 января 2015 23:55 - Юзер

К сожалению, ни один из ответов не работают( Есть еще какие-нибудь варианты?

zemlia-zemlia
2

zemlia-zemlia - 26 февраля 2016 18:41 - Юзер

Есть. Надо в файле engine/engine php найти три блока отвечающие за вывод новостей в архиве.
################ Новости за день #################
################ Новости за месяц #################
################ Новости за год #################

в конце каждого блока есть по 2 строки типа
$sql_select = "SELECT p.id, p.autor, p.date, p.БЛАБЛА БЛА
$sql_count = "SELECT COUNT(*) as counБЛА БЛА

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

$where_date .= " AND category = '1'";

где 1 это номер категории из которой выводить.

если же необходимо несколько категорий указать то тогда
$where_date .= " AND category IN (1,2,3)";
выведет новости из 1, 2, 3 категории

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

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