<?
/**************************************************************************
Компонент для отображения top элементов сгруппированных по разделам
***************************************************************************/
global $USER, $APPLICATION;
if (CModule::IncludeModule("iblock")):
IncludeTemplateLangFile(__FILE__);
/*************************************************************************
Инициализируем начальные параметры компонента
*************************************************************************/
/*
$IBLOCK_TYPE = $arParams["IBLOCK_TYPE"]; // тип инфо-блока
$IBLOCK_ID = $arParams["IBLOCK_ID"]; // ID инфо-блока
$PARENT_SECTION_ID = $arParams["PARENT_SECTION_ID"]; // родительский раздел
$SECTION_SORT_FIELD = $arParams["SECTION_SORT_FIELD"]; // по какому полю сортируем разделы
$SECTION_SORT_ORDER = $arParams["SECTION_SORT_ORDER"]; // порядок сортировки разделов
$SECTION_COUNT = $arParams["SECTION_COUNT"]; // кол-во разделов
$SECTION_URL = $arParams["SECTION_URL"]; // URL ведущий на страницу с содержимым раздела
$ELEMENT_COUNT = $arParams["ELEMENT_COUNT"]; // кол-во элементов в группе
$LINE_ELEMENT_COUNT = $arParams["LINE_ELEMENT_COUNT"]; // количество элементов в строке
$ELEMENT_SORT_FIELD = $arParams["ELEMENT_SORT_FIELD"]; // по какому полю сортируем элементы
$ELEMENT_SORT_ORDER = $arParams["ELEMENT_SORT_ORDER"]; // порядок сортировки элементов
$FILTER_NAME = $arParams["FILTER_NAME"]; // имя массива со значениями фильтра для фильтрации свойств
$CACHE_FILTER = $arParams["CACHE_FILTER"]; // Y - кэшировать результат выборки при установленом фильтре
$CACHE_TIME = $arParams["CACHE_TIME"]; // время кэширования (сек.)
*/
$LINE_ELEMENT_COUNT = intval($LINE_ELEMENT_COUNT);
global $$FILTER_NAME;
$arrFilter = ${$FILTER_NAME};
$CACHE_FILTER = ($CACHE_FILTER=="Y") ? "Y" : "N";
if ($CACHE_FILTER=="N" && count($arrFilter)>0) $CACHE_TIME = 0;
CIBlock::ShowPanel($IBLOCK_ID, 0, 0, $IBLOCK_TYPE);
/*************************************************************************
Работа с кэшем
*************************************************************************/
$CACHE_ID = __FILE__.md5(serialize($arParams).serialize($arrFilter).$USER->GetGroups());
$obCache = new CPHPCache;
if($obCache->StartDataCache($CACHE_TIME, $CACHE_ID, "/")):
/************************************
Разделы
************************************/
// $rsSections = GetIBlockList($IBLOCK_TYPE, Array(), Array());
// $rsSections = GetIBlockList($IBLOCK_TYPE, array("ID" => "desc"), array("ACTIVE"=>"Y"),$SECTION_COUNT);
// $arrProp = "";
$arSection = CIBlock::GetByID($IBLOCK_ID);
// while ($arSection = $rsSections->GetNext()) :
// if ($arSection==$IBLOCK_ID){
/************************************
Элементы
************************************/
// перечислим поля элемента которые нам нужны в выборке
$arSelect = array(
"ID",
"IBLOCK_ID",
"IBLOCK_SECTION_ID",
"NAME",
"DATE_CREATE",
"PREVIEW_PICTURE",
"DETAIL_PICTURE",
"DETAIL_PAGE_URL",
"SHOW_COUNTER",
"PREVIEW_TEXT"
);
// дополним фильтр
$arrFilter["ACTIVE"] = "Y";
$arrFilter["IBLOCK_ID"] = $IBLOCK_ID;
$arrFilter["IBLOCK_TYPE"] = $IBLOCK_TYPE;
$res = CIBlockElement::GetList(array($ELEMENT_SORT_FIELD => $ELEMENT_SORT_ORDER),Array("IBLOCK_ID"=>$IBLOCK_ID,"ACTIVE"=>"Y","SHOW_COUNTER" ) ,false, Array("nPageSize"=>$ELEMENT_COUNT), $arSelect);
// if ($rsElements = GetIBlockElementListEx($IBLOCK_TYPE, array(), array(), array($ELEMENT_SORT_FIELD => $ELEMENT_SORT_ORDER, "ID" => "ASC"), $ELEMENT_COUNT, $arrFilter |