Главная > CMS > bitrix — реализация выборки новостей по датам (с — по)

bitrix — реализация выборки новостей по датам (с — по)

В шаблоне перед foreach где рисуем новости.
Рисуем форму (даты необходимо будет указывать в формате день-месяц-год (xx-xx-xxxx), разделительный знак любой, нам важен порядковый номер цифр), для удобства можно использовать что-то вроде datePicker, но это уже совсем другая история)):

<form method="get" id="set_period">
	<label for="date1">С</label>
		&nbsp;
	<input type="text" name="date1" id="date1" value="<?=$_GET['date1']?>" />
		&nbsp;&ndash;&nbsp;
	<label for="date2">ПО</label>
		&nbsp;
	<input type="text" name="date2" id="date2" value="<?=$_GET['date2']?>" />
		&nbsp;
	<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 строки для того чтобы можно было указывать только начальную и/или конечную даты

Categories: CMS Tags:
  1. Пока что нет комментариев.
Похожие публикации