Понадобился расширенный календарь, работающий на основе дат начала и конца публикации.
Если новость публикуется 3 дня - все эти 3 дня будут отмечены в календаре этой новостью.
Сделано на основе БУТ 8.5 для реализации календаря подарков.
Меняем
$arSelectedFields = Array("ACTIVE", $arParams["DATE_FIELD"], "ID", "IBLOCK_ID", "SITE_ID", "DETAIL_PAGE_URL", "NAME", "LANG_DIR", "SORT", "IBLOCK_TYPE", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE"); |
На
$arSelectedFields = Array("ACTIVE", $arParams["DATE_FIELD"], "DATE_ACTIVE_TO", "ID", "IBLOCK_ID", "SITE_ID", "DETAIL_PAGE_URL", "NAME", "LANG_DIR", "SORT", "IBLOCK_TYPE", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE"); |
.
Далее меняем
while($arItem = $dbItems->GetNext())
{
$arDays[ConvertDateTime($arItem[$arParams["DATE_FIELD"]], CLang::GetDateFormat("SHORT"))][] = $arItem;
} |
на
while($arItem = $dbItems->GetNext())
{
$arDays[] = $arItem;
} |
Наконец
$tmpDate = date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT")), mktime(0,0,0,$m,$d,$y));
if(is_set($arDays[$tmpDate]))
{
$nn = 0;
foreach($arDays[$tmpDate] as $dayNews)
{
$nn++; |
на
$tmpDate = mktime(0,0,0,$m,$d,$y);
$nn = 0;
foreach ($arDays as $dayNews) {
$df = explode(".", $dayNews["DATE_ACTIVE_FROM"]);
$dt = explode(".", $dayNews["DATE_ACTIVE_TO"]);
$from = mktime(0,0,0,$df[1],$df[0],$df[2]);
$to = mktime(0,0,0,$dt[1],$dt[0],$dt[2]);
if( $to >= $tmpDate AND $from <= $tmpDate )
{
$nn++; |