Сначала создадим структуру компонента. Создайте папку для вашего компонента в директории local/components/ваш_модуль/ваш_компонент/
.
Создайте файл /.parameters.php
в папке компонента и добавьте следующий код:
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
$arComponentParameters = array(
"PARAMETERS" => array(
"USE_CACHE" => array(
"PARENT" => "BASE",
"NAME" => GetMessage("USE_CACHE"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "Y",
),
"CACHE_TIME" => array(
"PARENT" => "BASE",
"NAME" => GetMessage("CACHE_TIME"),
"TYPE" => "STRING",
"DEFAULT" => 3600,
"ADDITIONAL_VALUES" => "Y",
"VISIBLE" => $arCurrentValues["USE_CACHE"] == "Y",
),
),
);
Этот код добавляет параметры USE_CACHE
и CACHE_TIME
в настройки компонента.
Измените метод onPrepareComponentParams
в файле class.php
:
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
class YourComponentName extends CBitrixComponent
{
public function onPrepareComponentParams($arParams)
{
$arParams['USE_CACHE'] = $arParams['USE_CACHE'] === 'N' ? 'N' : 'Y';
$arParams['CACHE_TIME'] = $arParams['USE_CACHE'] === 'Y' ? (intval($arParams['CACHE_TIME']) > 0 ? intval($arParams['CACHE_TIME']) : 3600) : 0;
return $arParams;
}
public function executeComponent()
{
if ($this->arParams['USE_CACHE'] === 'Y' && $this->startResultCache()) {
$arFilter = array('IBLOCK_ID' => 1, 'ACTIVE' => 'Y');
$arSelect = array('ID', 'NAME', 'PREVIEW_TEXT');
$nav = new \Bitrix\Main\UI\PageNavigation("nav");
$nav->allowAllRecords(true)->setPageSize(10)->initFromUri();
$rsNews = CIBlockElement::GetList(array(), $arFilter, false, array("nPageSize" => $nav->getPageSize(), "iNumPage" => $nav->getCurrentPage()), $arSelect);
$nav->setRecordCount($rsNews->NavRecordCount);
$this->arResult['NAV'] = $nav;
$arResult['NEWS'] = array();
while ($arNews = $rsNews->GetNext()) {
$arResult['NEWS'][] = $arNews;
}
$this->arResult = $arResult;
$this->includeComponentTemplate();
}
else {
$this->AbortResultCache();
}
}
}
Измените template.php
:
Этот код добавляет вывод сообщения, если данных нет.
Теперь у вас есть гибкий компонент для вывода списка элементов инфоблока с пагинацией, кешированием и возможностью настройки времени кеширования прямо из параметров компонента. При необходимости вы можете легко настраивать его поведение через административный интерфейс Битрикса.
Коментарии отсутствуют, будьте первым(ой) кто напишет под этим постом!
Написать коментарий