Gadgets - uniqcle/Bitrix GitHub Wiki

Intro

https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=4861&LESSON_PATH=3913.4776.4861

Create Gadget

test.php->Компонент Desctop (Сервисы->Desctop)

Structure

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'] = "Список последних добавленных товаров";
?>
⚠️ **GitHub.com Fallback** ⚠️