|
|
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=номер_используемого_для_вывода_шаблона_компонента¶m1=$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
|