Выводим список элементов инфоблока с применением фильтрации, сортировки и дополнительной обработки в `result_modifier.php`, например, добавляя произвольное поле к каждому элементу.
Пример кода (component.php):Код |
---|
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
// Подготовка параметров
$arParams['IBLOCK_ID'] = intval($arParams['IBLOCK_ID']);
$arParams['SORT_BY'] = $arParams['SORT_BY'] ?: 'ID';
$arParams['SORT_ORDER'] = $arParams['SORT_ORDER'] === 'DESC' ? 'DESC' : 'ASC';
// Получение элементов
$arResult['ITEMS'] = [];
$res = CIBlockElement::GetList(
[$arParams['SORT_BY'] => $arParams['SORT_ORDER']],
['IBLOCK_ID' => $arParams['IBLOCK_ID'], 'ACTIVE' => 'Y'],
false,
['nPageSize' => $arParams['PAGE_SIZE'] ?: 10],
['ID', 'NAME', 'PREVIEW_TEXT', 'DETAIL_PAGE_URL']
);
while ($item = $res->GetNext()) {
$arResult['ITEMS'][] = $item;
}
$this->IncludeComponentTemplate();
|
Файл result_modifier.php:Код |
---|
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
foreach ($arResult['ITEMS'] as &$item) {
$item['CUSTOM_FIELD'] = 'Дополнительный текст для ' . $item['NAME'];
}
unset($item);
|
Файл template.php:Код |
---|
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
foreach ($arResult['ITEMS'] as $item): ?>
<div class="item">
<h2><?= $item['NAME'] ?></h2>
<p><?= $item['PREVIEW_TEXT'] ?></p>
<small><?= $item['CUSTOM_FIELD'] ?></small>
</div>
<?php endforeach; ?>
|
Вызов компонента:Код |
---|
<?php
$APPLICATION->IncludeComponent(
'your_namespace:your_component',
'',
[
'IBLOCK_ID' => 5,
'SORT_BY' => 'NAME',
'SORT_ORDER' => 'ASC',
'PAGE_SIZE' => 5
]
);
|