<?
/**************************************************************************
Компонент для отображения 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, $arSelect)):
//if ($rsElements = GetIBlockElementList($iblock_id, false, array($ELEMENT_SORT_FIELD => $ELEMENT_SORT_ORDER, "ID" => "ASC"), $ELEMENT_COUNT, $arrFilter)):
if ($rsElements = $res):
$rsElements->NavStart($ELEMENT_COUNT);
$count = intval($rsElements->SelectedRowsCount());
if ($count>0):
/****************************************************************
HTML форма
****************************************************************/
?>
<a class="subtitletext" href="<?=$SECTION_URL?>&SECTION_ID=<?=$arSection["ID"]?>"><?echo htmlspecialchars($arSection["NAME"])?></a><br><img height="10" src="/bitrix/images/1.gif" width="1"><br>
<table cellpadding="5" cellspacing="0" border="0" width="100%">
<tr><?
$n=1;
$cell = 0;
while ($obElement = $rsElements->GetNextElement()):
$cell++;
$arElement = $obElement->GetFields();
$arProps = $obElement->GetProperties();
$arLinkProp = $arProps["DOC_LINK"];
$image1 = intval($arElement["PREVIEW_PICTURE"])<=0 ? $arElement["DETAIL_PICTURE"] : $arElement["PREVIEW_PICTURE"];
$image2 = intval($arElement["DETAIL_PICTURE"])<=0 ? $arElement["PREVIEW_PICTURE"] : $arElement["DETAIL_PICTURE"];
?>
<td width="<?=(100/$LINE_ELEMENT_COUNT)?>%" height="88" valign="top">
<table cellpadding="2" cellspacing="0" border="0">
<tr>
<td valign="top" width="100%">
<?if ($image1):?>
<table cellpadding="0" cellspacing="0" border="0" align="left">
<tr>
<td valign="top"><?echo ShowImage($image1, 66, 78, "class='main' hspace='2' vspace='2' align='left' border='3' ", $arElement["DETAIL_PAGE_URL"]);?></td>
<td valign="top"><img src="/bitrix/images/1.gif" width="10" height="1"></td>
</tr><tr><td> </td><td> </td></tr>
</table>
<?endif;?>
<font class="text"><a class="orangel" href="<?=$arElement["DETAIL_PAGE_URL"]?>"><?=$arElement["NAME"]?></a>
<br></font>
<font class="prot">
<?echo $arProps["writer"]["VALUE"];?>,
<?echo $arProps["country"]["VALUE"];?>,
<?$arDATE = ParseDate($arElement["DATE_CREATE"],"dmy");
echo $arDATE["0"]." ".GetMessage("MONTH_".intval($arDATE["1"])."_S")." ".$arDATE["2"];?>, </font> <br>
<font class=text><html><?if ($arElement["PREVIEW_TEXT"]):?><?echo $arElement["PREVIEW_TEXT"];?><br><?endif;?></html></font>
</td>
</tr>
</table></td>
<?
if($n%$LINE_ELEMENT_COUNT == 0):
$cell = 0;
?>
</tr>
<tr><td>
<?
endif; // if($n%$LINE_ELEMENT_COUNT == 0):
$n++;
endwhile; // while ($obElement = $rsElements->GetNextElement()):
while ($cell<$LINE_ELEMENT_COUNT):
$cell++;
endwhile;
?>
</td></tr>
</table>
<?
endif; // if ($count>0):
endif; // if ($rsElements = GetIBlockElementListEx
// endwhile;
$obCache->EndDataCache();
endif;
endif;
?>
|