Добрый вечер, подскажите что то не получается ничего вообще. Есть компонент архива новостей, в шаблоне выводится выводятся месяца по которым фильтруются новости.
Код |
---|
<?foreach($arResult["MONTH"] as $month):?>
<?if($month["ISSET_ELEMENTS"]=="Y"):?>
<li><a href="<?='/about-us/news/?'.$arParams["FILTER_NAME"].'_DATE_ACTIVE_FROM_1=01.'.$val[month].'.'.$val[year].'&'.$arParams["FILTER_NAME"].'_DATE_ACTIVE_FROM_2=31.'.$val[month].'.'.$val[year].'&set_filter=%D4%E8%EB%FC%F2%F0'?>" title="<?=$val[month_name]." ".$val[year]?>"><?=$month["DATE_FORMATED"]["MONTH_NAME"]?> <?=$month["DATE_FORMATED"]["YEAR"]?></a><?if($arParams["KNOW_CNT_ELEMENTS"]=="Y"):?> (<?=$month["CNT"]?>)<?endif;?></li>
<?endif;?>
<?endforeach;?>
|
Проблема в том что если в массиве есть повторяющиеся значения месяца, а без них никак за один месяц можно и не одну и не две новости опубликовать:
Код |
---|
Array
(
[0] => Array
(
[year] => 2015 13:08:00
[month] => 01
[month_name] => Январь
)
[1] => Array
(
[year] => 2015 13:08:00
[month] => 03
[month_name] => Март
)
[2] => Array
(
[year] => 2015 13:07:00
[month] => 04
[month_name] => Апрель
)
[3] => Array
(
[year] => 2015 12:28:00
[month] => 05
[month_name] => Май
)
[4] => Array
(
[year] => 2015 12:26:00
[month] => 06
[month_name] => Июнь
)
[5] => Array
(
[year] => 2015 13:09:00
[month] => 06
[month_name] => Июнь
)
)
|
Как видно в массиве 4 и 5 выводится июнь. Нужно что бы значение было уникальным и каждый месяц выводился только один раз.
В компоненте нашел где вывод идет только уникальных элементов, но почему то не срабатывает ничего. Вот код:
Код |
---|
//Получаем все нужные элементы
$arFilter = Array("IBLOCK_ID"=> $arParams["IBLOCK_ID"], "ACTIVE_DATE_FROM"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array("date_active_from"=>"ASC"), $arFilter);
$mas = "";
$s = "";
while($ob = $res->GetNext())
{
$y = explode(".", $ob["DATE_ACTIVE_FROM"]);
// Оставляем только уникальные элементы массива
if (array("year"=>$y["2"], "month"=>$y["1"]) != $s)
{
$s = array("year"=>$y["2"], "month"=>$y["1"]);
$mas[] = array("year"=>$y["2"], "month"=>$y["1"]);
}
}
|
К сожалению не работает, думаю вот как же сделать прям в цикле все это, т.е. с помощью функции например array_unique но что то тоже не выходит.