Здравствуйте! Возникла проблема с навигацией сайта. Суть: Есть инфоблок, в котором содержатся элементы (на нем реализована галерея), как у любого элемента инфоблока имеется анонс и общее описание. Возникла задача реализации блога. Так как пакет старт не включает такой опции приходится выкручиваться несколько иначе, общий функционал вывода подобен новостям, по этому решено было использовать комплексный компонент 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() и т.д., но согласитесь, не гоже изобретать заного велосипед, с таким же успехом можно было бы обойтись и без самого движка. В общем хотелось бы услышать (прочитать) мнения спецов по данной проблеме, сам с битриксом работаю недели две и всех фишек пока не знаю, по этому заранее извиняюсь, если ответы на вопросы очевидны.
п.с.: реализовывал ли кто нибудь коментарии на инфоблоках, если да, то хотелось бы увидеть пример по возможности и узнать какие модули лучше всего для этого использовать. Пока что задумка это создать новый инфоблок, в котором при комментировании нового элемента блога будет создаваться раздел с именем элемента блога, в котором будут добавляться комментарии в виде элементов раздела (каждый комментарий - новый элемент). Хотелось бы узнать как лучше всего организовать для подобной задачи форму отправки комментария, есть ли стандартные компоненты для этого (с поддержкой премодерации)?
Премного благодарен, Ваш пример рабочий, все действительно оказалось проще, чем я думал
Кстати что интересно, при включенном фильтре посмотреть изначально передаваемый массив arParams["FILTER_NAME"], в который записывается значение переменной arrFilter не вышло ...
У Вас появится еще одна проблема - как только включите кеширование, Ваш код работать перестанет скорее всего.
Цитата
ImBa2la пишет: То есть под нужды было добавлено условие проверки на наличие детального описания новости (в шаблоне news.list),
Перед вызовом news.list объявляете глобальную переменную. Скажем, так:
Код
global $arMyFilter;
$arMyFilter['!DETAIL_TEXT'] = false;
В настройках news.list в ключе FILTER_NAME (в визуальном редакторе - Фильтр) пишем имя нашей переменной:
Код
...
"FILTER_NAME" => "arMyFilter",
...
Убираете из шаблона компонента Ваши проверки. Все.
Доброго Времени Суток! Ситуация такая: элементы разбиты по разделам. У разделов есть польз. поле "Является ли общим товаром?" Тип данных: Да/Нет. Необходимо условие проверки этого поля. Т.е. чтобы выводило только элементы, которые находятся в разделах со значением поля "Да".
Не получается написать фильтр, т.к. необходимо обращаться к полю "родителя" элемента. Есть ли возможность написать такой фильтр и передать в компонент.
Пробовал в компоненте, в result_modifier пробегать по массиву элементов $arResult["ITEMS"] и по проверке данного условия удалять (unset) ненужные элементы. Это работает, но появляется похожая проблема, как у ImBa2la. На вывод поставляются пара-тройка элементов, но для навигации похоже получает неизменённый массив элементов, но поиск где и как передаётся массив элементов в пагинатор не закончился успехом.