В шаблоне перед foreach где рисуем новости.
Рисуем форму (даты необходимо будет указывать в формате день-месяц-год (xx-xx-xxxx), разделительный знак любой, нам важен порядковый номер цифр), для удобства можно использовать что-то вроде datePicker, но это уже совсем другая история)):
<form method="get" id="set_period">
<label for="date1">С</label>
<input type="text" name="date1" id="date1" value="<?=$_GET['date1']?>" />
–
<label for="date2">ПО</label>
<input type="text" name="date2" id="date2" value="<?=$_GET['date2']?>" />
<a href="#" onclick="$('#set_period').submit();">Показать</a>
</form>
Формируем массив дат, в нужном нам формате, который позволяет сделать выборку по принципу «больше или равно — меньше или равно», т.е. в формате (год, месяц, день) без разделительных знаков.
<?$news_dates=array();
function ParceResultDates($date) {
$df_day=substr($date,0,2);
$df_mon=substr($date,3,2);
$df_ye=substr($date,6,4);
$d_format=$df_ye.$df_mon.$df_day;
return $d_format;
}
foreach($arResult["ITEMS"]as$arDates):
$news_dates[]=ParceResultDates($arDates['DISPLAY_ACTIVE_FROM']);
endforeach;?>
Далее в foreach где выводим новости:
<?
//if(($_GET['date1']!='')&&($_GET['date2']!='')):
//$date_from=ParceResultDates($_GET['date1']);
//$date_to=ParceResultDates($_GET['date2']);
//else:
//$date_from=ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
//$date_to=ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
//endif;
$date_from=($_GET['date1']!='')?ParceResultDates($_GET['date1']):ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
$date_to=($_GET['date2']!='')?ParceResultDates($_GET['date2']):ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
$current_active_from=ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
if (($current_active_from>=$date_from)&&($current_active_from<=$date_to)):
?>
<!--Тут новости-->
<?endif;?>
Закоментрованная область — это если было бы необходимо указать только обе даты, иначе выводим все новости. Ниже 2 строки для того чтобы можно было указывать только начальную и/или конечную даты