Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

system.pagenavigation, arParams, arResult

00 голосов
2
Здравствуйте! Возникла проблема с навигацией сайта.
Суть:
Есть инфоблок, в котором содержатся элементы (на нем реализована галерея), как у любого элемента инфоблока имеется анонс и общее описание. Возникла задача реализации блога. Так как пакет старт не включает такой опции приходится выкручиваться несколько иначе, общий функционал вывода подобен новостям, по этому решено было использовать комплексный компонент news, что бы не слишком сильно запариваться с переходом на детальное описание.

Но возникла проблема следующего характера:
Вывод элементов блога планируется лишь тогда, когда элемент имеет детальное описание, то есть если детального описания нет - элемент не учитывается. То есть под нужды было добавлено условие проверки на наличие детального описания новости (в шаблоне news.list), но тут появилась другая проблема, навигация считается по полученному массиву $arParams["NAV_RESULT"], где уже предопределены параметры навигации (общее количество новостей, настройки вывода количества новостей и прочие, который задаются в настройке компонента news), т.е. имея реально 2 новости для вывода в блог навигация говорит, что у меня 23 новости - не есть хорошо.

Собственно теперь сам вопрос:
Кто сталкивался с подобным и как докопаться до определения массива $arParams, $arResult и повлиять на его вывод?

Перекопал файлы компонента news, news.list, system.pagenavigation, не нашел где он формируется. Притом массив для этих компонентов разный, если посмотреть его содержимое из файла component.php то есть он формируется где то на промежуточной стадии, где - не могу понять, а следовательно и повлиять на него тоже (arResult - аналогично).

Потом очень интересна структура вывода самого компонента новостей, так например до настройки шаблона system.pagination докопаться от туда нельзя приходится руками лезть в bitrix/components/bitrix/system.pagenavigation и колдовать уже там, что не есть хорошо, хотя название system кое о чем говорит, но все же ... и что самое интересное, я нигде не обнаружил вызова данного компонента аля:
$APPLICATION->IncludeComponent(
"bitrix:system.pagination",...
как и описания данного компонента в документации. Вот такие вопросы.

Пока решение проблемы видится в виде апи CDBResult (http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php) и иже с ним, ну или как обычный пщп-код, аля mysql_connect(), mysql_query() и т.д., но согласитесь, не гоже изобретать заного велосипед, с таким же успехом можно было бы обойтись и без самого движка. В общем хотелось бы услышать (прочитать) мнения спецов по данной проблеме, сам с битриксом работаю недели две и всех фишек пока не знаю, по этому заранее извиняюсь, если ответы на вопросы очевидны.

п.с.: реализовывал ли кто нибудь коментарии на инфоблоках, если да, то хотелось бы увидеть пример по возможности и узнать какие модули лучше всего для этого использовать. Пока что задумка это создать новый инфоблок, в котором при комментировании нового элемента блога будет создаваться раздел с именем элемента блога, в котором будут добавляться комментарии в виде элементов раздела (каждый комментарий - новый элемент). Хотелось бы узнать как лучше всего организовать для подобной задачи форму отправки комментария, есть ли стандартные компоненты для этого (с поддержкой премодерации)?
спросил 25 Ноя, 13 от Blodrayne (220 баллов)

2 Ответы

00 голосов
Цитата
ImBa2la пишет:
но тут появилась другая проблема

У Вас появится еще одна проблема - как только включите кеширование, Ваш код работать перестанет скорее всего.
Цитата
ImBa2la пишет:
То есть под нужды было добавлено условие проверки на наличие детального описания новости (в шаблоне news.list),

Перед вызовом news.list объявляете глобальную переменную. Скажем, так:
Код
global $arMyFilter;
$arMyFilter['!DETAIL_TEXT'] = false;

В настройках news.list в ключе FILTER_NAME (в визуальном редакторе - Фильтр) пишем имя нашей переменной:
Код
...
"FILTER_NAME" => "arMyFilter",
...

Убираете из шаблона компонента Ваши проверки. Все.
ответил 16 Янв, 14 от Pomnep (13,960 баллов)
00 голосов
Премного благодарен, Ваш пример рабочий, все действительно оказалось проще, чем я думал :)

Кстати что интересно, при включенном фильтре посмотреть изначально передаваемый массив arParams["FILTER_NAME"], в который записывается значение переменной arrFilter не вышло ...
ответил 05 Май, 14 от Blodrayne (220 баллов)

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

0 голосов
0 ответов
спросил 21 Март, 19 от аноним
0 голосов
7 ответов
спросил 28 Июль, 13 от Exet (380 баллов)