Как сделать фильтр по дате активности в news.List?

Для создания фильтра по дате активности в компоненте news.List в "1C-Bitrix" необходимо добавить соответствующую конструкцию в код компонента.

1. Откройте файл шаблона компонента .default/template.php, который находится в папке с компонентом bitrix/components/bitrix/news.list.

2. Найдите код, отвечающий за получение списка новостей. Обычно он выглядит примерно так:

<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>
<div class="news-list">
<?php if ($arParams["DISPLAY_TOP_PAGER"]): ?>
    <?= $arResult["NAV_STRING"] ?><br />
<?php endif;?>
<?php foreach($arResult["ITEMS"] as $arItem): ?>
    <p class="news-item">
        <a href="<?= $arItem["DETAIL_PAGE_URL"] ?>"><?= $arItem["NAME"] ?></a><br />
        <span class="news-date"><?= $arItem["DISPLAY_ACTIVE_FROM"] ?></span>
        <div><?= $arItem["PREVIEW_TEXT"] ?></div>
    </p>
<?php endforeach; ?>
<?php if ($arParams["DISPLAY_BOTTOM_PAGER"]): ?>
    <br /><?= $arResult["NAV_STRING"] ?>
<?php endif; ?>
</div>

3. Добавьте перед началом цикла foreach конструкцию, которая задает фильтр по дате активности:

<?php
...
$filter = Array(">DATE_ACTIVE_FROM" => date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT")), time()));
$arParams["FILTER_NAME"] = "filter";
$arResult["FILTER"] = $filter;
...
?>

4. В шаблоне компонента добавьте код для отображения формы фильтрации:

<form name="filter_form" action="<?= $APPLICATION->GetCurPage() ?>" method="get">
    <input type="hidden" name="set_filter" value="Y" />
    <table>
        <tr>
            <td>Дата активности:</td>
            <td>
                <input type="text" name="filter_date" value="<?= $arResult["FILTER"]["DATE_ACTIVE_FROM"] ?>" />
            </td>
        </tr>
        <!-- Добавьте другие необходимые поля фильтрации -->
    </table>
    <input type="submit" name="filter_submit" value="Применить" />
</form>

5. Добавьте код для обработки фильтрации в начале файла шаблона компонента:

<?
if ($_GET["set_filter"] == "Y") {
  $filter = Array();
  
  if ($_GET["filter_date"]) {
      $filter[">=DATE_ACTIVE_FROM"] = $_GET["filter_date"];
  }
  
  $arParams["FILTER_NAME"] = "filter";
  $arResult["FILTER"] = $filter;
}
?>

Теперь у вас должен появиться фильтр по дате активности в компоненте news.List в "1C-Bitrix", который будет фильтровать список новостей по указанной дате. Вы можете также добавить другие поля фильтрации и аналогичным образом обрабатывать их значения.