Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Как исключить текущую страницу из вывода статей

17.05.2022, 19:42
Евгений П.

Зарегистрирован:
2011-06-24
Сообщений: 5

Может кто-нибудь подскажет решение? На странице полного отображения объекта (статья) подключили вывод статей из других разделов сайта, в том числе и того, где находится объект, через nc_objects_list(). Но туда же выводится и страница, на которой сейчас может находиться пользователь. Как ее исключить из вывода?

evgenyg
17.05.2022, 23:18
Баранов Александр
NetCat

Зарегистрирован:
2013-04-17
Сообщений: 40

Можно посоветовать попробовать передавать в третий параметр-строку вызываемой функции nc_objects_list() номер текущего объекта $f_RowID примерно так nc_objects_list(номер_раздела, номер_инфоблока, “&nc_ctpl=номер_используемого_для_вывода_шаблона_компонента&param1=$f_RowID”), а уже в шаблоне , используемом для вывода через nc_objects_list() исключать этот переданный объект из выборки, например, в системных настройках через установки переменной $query_where = "a.Message_ID != $param1". Совершенно не исключено, что могут быть и другие варианты реализаций.

abaranov
18.05.2022, 11:48
Евгений П.

Зарегистрирован:
2011-06-24
Сообщений: 5

Не, не сработало. Ошибка Unknown column 'param1' in 'where clause'

evgenyg
18.05.2022, 12:12
Баранов Александр
NetCat

Зарегистрирован:
2013-04-17
Сообщений: 40

Я предложил отнюдь не готовое решение(то есть, не стоит просто брать и копировать), а примерную схему и логику разработки. Что касается вашей ошибки - нужна, конечно же, ее отладка, но предположительно, вы в условии $query_where = "a.Message_ID != $param1" указали не переменную $param1, которая должна быть определена в шаблоне, а просто строку param1.

abaranov
19.05.2022, 21:12
Евгений П.

Зарегистрирован:
2011-06-24
Сообщений: 5

Так-то вроде все логично. По идее можно передать в переменную $param1 массив значений поля Message_ID через $nc_core->db->get_col, но что-то не получается. Более того, передал в $param1 конкретный id страницы, которую не нужно выводить, то есть $param1 = 51254 к примеру, все равно условие $query_where = "a.Message_ID != $param1" не работает.

evgenyg
19.05.2022, 23:05
Баранов Александр
NetCat

Зарегистрирован:
2013-04-17
Сообщений: 40

Мне ничего не остается, кроме как посоветовать вам как разработчику провести подробную пошаговую отладку кода и результирующего запроса $message_select в шаблоне с этим параметром. Также вполне возможно, что можно найти другое решение вашей задачи в плане логики (не стоит рассматривать предложенную как единственный возможный вариант)

abaranov
19.06.2022, 23:33
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 482

В системных настройках перед $query_where нужно указать игнорирование раздела и инфоблока:
Код:
$ignore_cc = $ignore_sub = 1;


А потом уже указывать ЧТО, ОТКУДА и с КАКИМ условием выводить, например:
Код:
$query_where = "a.Subdivision_ID = ". $current_sub['Subdivision_ID'] ." AND Message_ID != ". $id ."";

$id - ID объекта, который выводить не нужно.

Stark
02.09.2022, 10:37
Евгений П.

Зарегистрирован:
2011-06-24
Сообщений: 5

сработал вот такой способ

$ignore_sub = $ignore_cc = 1;

$query_where = "(a.`Message_ID` <> $itemID) AND (a.`Subdivision_ID` IN (здесь перечень разделов из которых выводятся новости))";

evgenyg
198 196 2022-09-02 10:37:11 15330
Описание проекта