Gadgets - uniqcle/Bitrix GitHub Wiki
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=4861&LESSON_PATH=3913.4776.4861
test.php
->Компонент Desctop (Сервисы->Desctop)
namespace bitrix/gadget/uniqcle/mygadget
.description
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?php
$arDescription = Array(
"NAME"=>GetMessage("GD_PRODUCTS_NAME"),
"DESCRIPTION"=>GetMessage("GD_PRODUCTS_DESC"),
"ICON"=>"",
"GROUP"=> Array("ID"=>"personal"),
"SU_ONLY" => false
);
.parameters.php
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
if(!CModule::IncludeModule("iblock"))
return false;
$arIBlocks = array("" => GetMessage("GD_PRODUCTS_EMPTY"));
$dbIBlock = CIBlock::GetList(
array("SORT"=>"ASC", "NAME"=>"ASC"),
array(
"CHECK_PERMISSIONS" => "Y",
)
);
while($arIBlock = $dbIBlock->GetNext())
$arIBlocks[$arIBlock["ID"]] = "[".$arIBlock["ID"]."] ".$arIBlock["NAME"];
$arParameters = Array(
"PARAMETERS"=> Array(
),
"USER_PARAMETERS"=> Array(
// Почему то в общих параметрах IBLOCK_ID не отображается...
"IBLOCK_ID" => Array(
"NAME" => GetMessage("GD_PRODUCTS_IBLOCK_ID"),
"TYPE" => "LIST",
"VALUES" => $arIBlocks,
"MULTIPLE" => "N",
"DEFAULT" => '',
"REFRESH" => "Y",
),
"ELEMENT_COUNT" => array(
"NAME" => GetMessage("GD_PRODUCTS_ELEMENT_COUNT"),
"TYPE" => "STRING",
"DEFAULT" => '5',
),
"SHOW_UNACTIVE_ELEMENTS" => array(
"NAME" => GetMessage("GD_PRODUCTS_SHOW_UNACTIVE"),
"TYPE" => "CHECKBOX",
"MULTIPLE" => "N",
"DEFAULT" => "N",
),
),
);
?>
index.php
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
?>
<?
// pre($arGadgetParams);
#
# INPUT PARAMS
#
$arGadgetParams["IBLOCK_ID"] = intval($arGadgetParams["IBLOCK_ID"]);
if ($arGadgetParams["IBLOCK_ID"] <= 0)
return false;
$arGadgetParams["ELEMENT_COUNT"] = intval($arGadgetParams["ELEMENT_COUNT"]);
if ($arGadgetParams["ELEMENT_COUNT"] <= 0)
$arGadgetParams["ELEMENT_COUNT"] = 5;
$arGadgetParams["SHOW_UNACTIVE_ELEMENTS"] = $arGadgetParams["SHOW_UNACTIVE_ELEMENTS"]!="N";
$arNavParams = array(
"nPageSize" => $arGadgetParams["ELEMENT_COUNT"],
);
#
# CACHE
#
$obCache = new CPageCache;
$cacheTime = 5*60;
$cacheId = $arGadgetParams["IBLOCK_ID"].$arGadgetParams["ELEMENT_COUNT"].$arGadgetParams["ELEMENT_COUNT"];
if($obCache->StartDataCache($cacheTime, $cacheId, "/")):
if(!CModule::IncludeModule("iblock"))
{
ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
return;
}
$arSelect = array(
"ID",
"ACTIVE",
"DATE_CREATE",
"IBLOCK_ID",
"DETAIL_PAGE_URL",
"NAME",
"PREVIEW_PICTURE",
);
$arFilter = array (
"IBLOCK_ID" => $arGadgetParams["IBLOCK_ID"],
"CHECK_PERMISSIONS" => "Y",
);
if(!$arGadgetParams["SHOW_UNACTIVE_ELEMENTS"])
$arFilter["ACTIVE"] = "Y";
$arSort = array("DATE_CREATE"=>"DESC");
$rsElement = CIBlockElement::GetList($arSort, $arFilter, false, $arNavParams, $arSelect);
while($arElement = $rsElement->GetNext()):
?>
<div style="margin-bottom: 10px;">
<div style="float: left; width: 50px; margin-right: 10px">
<a href="<?=$arElement['DETAIL_PAGE_URL']?>"><?=CFile::ShowImage($arElement['PREVIEW_PICTURE'],50,50)?></a>
</div>
<a href="<?=$arElement['DETAIL_PAGE_URL']?>"><?=$arElement['NAME']?></a><br/>
<small><?=$arElement['DATE_CREATE']?></small>
<div style="clear: both;"></div>
</div>
<?
endwhile;
$obCache->EndDataCache();
endif;
?>
lang/ru/index.php
<?
$MESS["IBLOCK_MODULE_NOT_INSTALLED"] = "Модуль инфоблоков не установлен!";
?>
lang/ru/parameters.php
<?
$MESS["GD_PRODUCTS_EMPTY"] = "-- выбрать --";
$MESS["GD_PRODUCTS_IBLOCK_ID"] = "ID инфоблока";
$MESS["GD_PRODUCTS_ELEMENT_COUNT"] = "Количество элементов";
$MESS["GD_PRODUCTS_SHOW_UNACTIVE"] = "Показывать неактивные элементы";
?>
```php
<?
$MESS ['GD_PRODUCTS_NAME'] = "Последние товары";
$MESS ['GD_PRODUCTS_DESC'] = "Список последних добавленных товаров";
?>