Тема персонального рабочего стола от Битрикса будоражит воображение заказчиков и разработчиков. А введение поддержки гаджетов от Google вообще сорвало крышу )).
И так рецепт приготовления из обычного компонента - гаджета для рабочего стола.
[spoiler]
Задача:
Нужен Гаджет показывающий список новостей.
Возможность настроить зарегистрированному пользователю:
- кол-во показываемых новостей;
- полный, или краткий форматы новости;
- показ новостей по заданным критериям(по какой-то определенной теме);
(этореальный заказ )
1. Создаем в своем пространстве имен папку для гаджета. Например так:
/bitrix/gadgets/shef/news/
2. Создаем файлы
.description.php
.parameters.php
index.php
подробнее об этом можно почитать у Yury TushinskyВерсия 8.0: Персональный рабочий стол
3. Определяемся с форматом вывода данных. Для простоты я возьму дефолтный шаблон.
4. Определяем параметры в .parameters.php
5. Подключаем в index.php компонент вывода списка новостей согластно заданным параметрам
Итого:

Быстро и вкусно )) Можно подключить любой компонент Битрикса.
И так рецепт приготовления из обычного компонента - гаджета для рабочего стола.
[spoiler]
Задача:
Нужен Гаджет показывающий список новостей.
Возможность настроить зарегистрированному пользователю:
- кол-во показываемых новостей;
- полный, или краткий форматы новости;
- показ новостей по заданным критериям(по какой-то определенной теме);
(это
1. Создаем в своем пространстве имен папку для гаджета. Например так:
/bitrix/gadgets/shef/news/
2. Создаем файлы
.description.php
.parameters.php
index.php
подробнее об этом можно почитать у Yury Tushinsky
3. Определяемся с форматом вывода данных. Для простоты я возьму дефолтный шаблон.
4. Определяем параметры в .parameters.php
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); if(!CModule::IncludeModule("iblock")) return; $arIBlocks=Array(); $db_iblock = CIBlock::GetList(Array("SORT"=>"ASC"), Array("SITE_ID"=>$_REQUEST["site"], "TYPE" => ($arCurrentValues["IBLOCK_TYPE"]!="-"?$arCurrentValues["IBLOCK_TYPE"]:""))); while($arRes = $db_iblock->Fetch()) $arIBlocks[$arRes["ID"]] = $arRes["NAME"]; $arSections = array(); $arSections['ALL'] = 'Все'; $arFilter = Array("IBLOCK_ID"=>(isset($arCurrentValues["IBLOCK_ID"])?$arCurrentValues["IBLOCK_ID"]:$arCurrentValues["ID"]), 'GLOBAL_ACTIVE'=>'Y'); $db_list = CIBlockSection::GetList(Array(), $arFilter); while($arRes = $db_list->Fetch()) $arSections[$arRes["ID"]] = $arRes["NAME"]; $arParameters = Array( "PARAMETERS"=> Array( "TMPLATE"=> Array( "NAME" => "Шаблон для списка (bitrix:news.list)", "TYPE" => "STRING", "DEFAULT" => ".default", ), "IBLOCK_ID" => Array( "NAME" => 'Инфоблок для вывода', "TYPE" => "LIST", "VALUES" => $arIBlocks, "DEFAULT" => '={$_REQUEST["ID"]}', ), ), "USER_PARAMETERS" => Array( "ITEMS_CNT"=> Array( "NAME" => "кол-во показываемых элементов", "TYPE" => "STRING", "DEFAULT" => "20", ), "FLG_TYPE"=> Array( "NAME" => "полный формат", "TYPE" => "CHECKBOX", "DEFAULT" => "Y", ), "SECTION"=> Array( "NAME" => "Раздел", "TYPE" => "LIST", "VALUES" => $arSections, "DEFAULT" => "ALL" ), ), ); ?> |
5. Подключаем в index.php компонент вывода списка новостей согластно заданным параметрам
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); // инициализация $arGadgetParams["TMPLATE"] = (isset($arGadgetParams["TMPLATE"])?$arGadgetParams["TMPLATE"]:".default"); $arGadgetParams["IBLOCK_ID"] = (isset($arGadgetParams["IBLOCK_ID"])?$arGadgetParams["IBLOCK_ID"]:0); $arGadgetParams["ITEMS_CNT"] = (isset($arGadgetParams["ITEMS_CNT"])?$arGadgetParams["ITEMS_CNT"]:20); $arGadgetParams["FLG_TYPE"] = (isset($arGadgetParams["FLG_TYPE"])?$arGadgetParams["FLG_TYPE"]:'Y'); $arGadgetParams["SECTION"] = (isset($arGadgetParams["SECTION"])?$arGadgetParams["SECTION"]:null); $arGadgetParams["SECTION"] = (($arGadgetParams["SECTION"] != 'ALL')?$arGadgetParams["SECTION"]:null); ?> <?$APPLICATION->IncludeComponent("bitrix:news.list", $arGadgetParams["TMPLATE"], array( "IBLOCK_TYPE" => "news", "IBLOCK_ID" => $arGadgetParams["IBLOCK_ID"], "NEWS_COUNT" => $arGadgetParams["ITEMS_CNT"], "SORT_BY1" => "ACTIVE_FROM", "SORT_ORDER1" => "DESC", "SORT_BY2" => "SORT", "SORT_ORDER2" => "ASC", "FILTER_NAME" => "", "FIELD_CODE" => array( 0 => ($arGadgetParams["FLG_TYPE"] == 'Y' ? "DETAIL_TEXT" : null), 1 => "", ), "PROPERTY_CODE" => array( 0 => '', 1 => "", ), "CHECK_DATES" => "Y", "DETAIL_URL" => "", "AJAX_MODE" => "N", "AJAX_OPTION_SHADOW" => "Y", "AJAX_OPTION_JUMP" => "N", "AJAX_OPTION_STYLE" => "Y", "AJAX_OPTION_HISTORY" => "N", "CACHE_TYPE" => "A", "CACHE_TIME" => "3600", "CACHE_FILTER" => "N", "PREVIEW_TRUNCATE_LEN" => "", "ACTIVE_DATE_FORMAT" => "d.m.Y", "DISPLAY_PANEL" => "N", "SET_TITLE" => "Y", "SET_STATUS_404" => "N", "INCLUDE_IBLOCK_INTO_CHAIN" => "Y", "ADD_SECTIONS_CHAIN" => "Y", "HIDE_LINK_WHEN_NO_DETAIL" => "N", "PARENT_SECTION" => $arGadgetParams["SECTION"], "PARENT_SECTION_CODE" => "", "DISPLAY_TOP_PAGER" => "N", "DISPLAY_BOTTOM_PAGER" => "N", "PAGER_TITLE" => "Новости", "PAGER_SHOW_ALWAYS" => "N", "PAGER_TEMPLATE" => "", "PAGER_DESC_NUMBERING" => "N", "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000", "DISPLAY_DATE" => "Y", "DISPLAY_NAME" => "Y", "DISPLAY_PICTURE" => "Y", "DISPLAY_PREVIEW_TEXT" => ($arGadgetParams["FLG_TYPE"] == 'Y' ? 'N' : 'Y'), "AJAX_OPTION_ADDITIONAL" => "" ), false );?> |
Итого:

Быстро и вкусно )) Можно подключить любой компонент Битрикса.