bitrix — реализация выборки новостей по датам (с — по)
В шаблоне перед 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 строки для того чтобы можно было указывать только начальную и/или конечную даты