Для начала рассмотрим его снаружи.
Рабочий стол представляет из себя набор гаджетов, блоков с различной информацией (не путать с модулем Информационные блоки, это совсем другое), которые можно перетаскивать по столу и настраивать для каждого из них какой-то минимальный набор самых простых параметров. В комплект в Главный модуль входит следующий набор гаджетов: избранные ссылки, заметки, пробки, RSS читалка, прогноз погоды.
Каждый их них может настраиваться авторизованным пользователем и его настройки и расположение гаджетов на персональном столе запоминаются. В модуле Корпоративного портала гаджетов гораздо больше, каждый из них выполняют свою маленькую, но очень полезную информативную функцию.
[spoiler]
Посмотрим чуть-чуть поглубже.
Персональный рабочий стол – компонент 2.0. При его размещении на страницу необходимо указать его идентификатор, который позволяет разграничить (или объединить) пользовательские настройки гаджетов на разных страницах или нескольких рабочих столов на одной странице (например, когда рабочий стол располагается на странице и в шаблоне сайта). Также можно указать количество и размер столбцов рабочего стола. Параметр «Разрешить настраивать рабочий стол всем авторизованным пользователям» позволяет ограничить возможность настройки рабочего стола только для пользователей которые имеют права записи в данный файл.
Далее идет возможность выбрать список доступных на данной странице гаджетов и настройки для каждого из них. Формально настройки разделены на параметры настраиваемые администратором сайта и на настройки по умолчанию для тех параметров, которые может настроить сам пользователь.
Например, для гаджета «Прогноз погоды» администратор может настроить время кеширования (т.к. только он может грамотно это сделать) , чтобы не запрашивать прогноз чаще чем это нужно, а всем новым пользователям заранее предустановить такой параметр как город, для которого будет показываться прогноз. Причем город каждый пользователь сможет потом изменить для себя. Каждый гаджет можно вывести на свой рабочий стол несколько раз и каждый из них будет иметь свои собственные персональные настройки.
Чтобы добавить новый гаджет на рабочий стол необходимо выбрать его в меню из кнопки «Добавить», чтобы переместить его необходимо «схватить» мышкой за заголовок и переместить в нужное место. Чтобы свернуть – нажать на «минус», закрыть – на «крестик», настроить – на «стрелочку».
Помимо кнопки «Добавить», для пользователей с правом записи на страницу где расположен компонент, имеется кнопка «Сохранить настройки по умолчанию». Эта кнопка позволяет настроить типовой рабочий стол и задать его по умолчанию для всех пользователей, которые не успели настроить его под себя. Для тех пользователей, которые уже настроили свой стол, но хотят восстановить настройки по умолчанию, есть кнопка «Сбросить текущие настройки».
Существует еще вариант использования как сейчас сделано на главной странице в дистрибутиве КП 8.0: администратор в простом визуальном режиме добавляет, перетаскивает и настраивает необходимый набор гаджетов, но за счет выключенного в настройках компонента флажка "Разрешить настраивать рабочий стол всем авторизованным пользователям" простым пользователям эта страница выглядит как обычная, без дополнительных кнопок.
Теперь совсем углубимся.
Технически гаджеты очень похожи на компоненты, большинство гаджетов даже основываются на компонентах, но все же есть и отличия.
Гаджеты располагаются в своей папке /bitrix/gadgets, далее идет подпапка пространства имен (пространство "bitrix" как обычно занято нами), ниже идут папки с гаджетами. Название папки является идентификатором гаджета. Пространства имен работают по следующему простому алгоритму: сначала выбираются гаджеты из папки bitrix, затем из всех остальных, найденные гаджеты суммируются, если найденный гаджет уже был определен в папке bitrix, то он его заменяет – таким образом можно переопределять системные гаджеты и даже исключать их из списка доступных.
Внутри папки гаджета следующие обязательные файлы:
- .description.php – файл с описанием. Определяет в себе массив следующей структуры: $arDescription = Array( "NAME"=>"Название", "DESCRIPTION"=>"Описание", "GROUP"=> Array("ID"=>"в какой раздел: personal, employees, communications, company, services, other"), ); - .parameters.php – файл с параметрами гаджета. Параметры делятся на те, которые настраивает администратор и на те, которые могут настраивать пользователи. Пример файла: $arParameters = Array( "PARAMETERS"=> Array( "CACHE_TIME" => array( "NAME" => "Время кеширования, сек (0-не кешировать)", "TYPE" => "STRING", "DEFAULT" => "3600" ), ), "USER_PARAMETERS"=> Array( "CITY"=>Array( "NAME" => "Город", "TYPE" => "LIST", "MULTIPLE" => "N", "DEFAULT" => "c213", "VALUES"=>$arCity, ), ), ); - папка lang – для локализации гаджета на несколько языков, файлы локализации подключаются автоматически. - index.php – сам исполняемый код гаджета. |
Код гаджета обычный php файл, который выводит html гаджета. Внутри этого PHP скрипта доступны следующие переменные:
$arGadgetParams - содержит все настройки гаджета, т.е. установленные значения PARAMETERS + USER_PARAMETERS из .parameters.php. - параметры вызова всего компонента и дополнительно два элемента этого массива: "PERMISSION" - права на доступ к гаджету (R|W) и "UPD_URL" - путь к текущей страницы для POST. $arGadget - массив "ID" => уникальный код расположенного на странице гаджета (на одной странице могут быть несколько одинаковых гаджетов, но код у них будет разный), "GADGET_ID" => идентификатор гаджета, "NAME" => название гаджета, "DESCRIPTION" => описание, "PATH" => полный путь к папке с гаджетом, "TITLE" => заголовок окна гаджета (можно переопределять в самом скрипте гаджета), по умолчанию равен $arGadget["NAME"], "SETTINGS" => это тоже самое что $arGadgetParams, "HIDE" => признак свернутости содержания гаджета (Y|N), "USERDATA" => массив для хранения произвольных настроек гаджета, при его изменении в скрипте, данные автоматически сохраняются. При этом, если потребуется сделать редирект обратно на эту страницу, необходимо взвести триггер, установив параметр $arGadget["FORCE_REDIRECT"]=true; |
Пример гаджета Hello World!
Напишем простой гаджет, который будет приветствовать пользователя и показывать ему число показов этого конкретного гаджета.
Создадим в своем пространстве имен папку hello и начнем размещать в нем необходимые файлы:
Код описания гаджета .description.php:
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); $arDescription = Array( "NAME"=>"Привет!", "DESCRIPTION"=>"Гаджет приветствия", "GROUP"=> Array("ID"=>"services"), ); ?> |
Параметры гаджета .parameters.php:
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); $arParameters = Array( "PARAMETERS"=> Array( "TEXT_MSG"=> Array( "NAME" => "Текст приветствия", "TYPE" => "STRING", "DEFAULT" => "Привет, #NAME#! Мы виделись #CNT# раз.", ), ), "USER_PARAMETERS" => Array( "TEXT_NAME"=> Array( "NAME" => "Имя", "TYPE" => "STRING", "DEFAULT" => "друг", ), ), ); ?> |
Исполняемый код гаджета index.php:
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); // инициализация $arGadgetParams["TEXT_MSG"] = (isset($arGadgetParams["TEXT_MSG"])?$arGadgetParams["TEXT_MSG"]:"Привет, #NAME#! Мы виделись #CNT# раз."); $arGadgetParams["TEXT_NAME"] = (isset($arGadgetParams["TEXT_NAME"])?$arGadgetParams["TEXT_NAME"]:"друг"); $arGadget["USERDATA"]["CNT"] = intval($arGadget["USERDATA"]["CNT"]); $arGadget["USERDATA"]["CNT"]++; $arGadget["TITLE"] = "Привет, ".htmlspecialchars($arGadgetParams["TEXT_NAME"])."!"; $MSG = $arGadgetParams["TEXT_MSG"]; $MSG = str_replace("#NAME#", $arGadgetParams["TEXT_NAME"], $MSG); $MSG = str_replace("#CNT#", $arGadget["USERDATA"]["CNT"], $MSG); ?> <p><?=htmlspecialchars($MSG);?></p> |
В этом примере я попытался затронуть все возможности, но не перегружая код, чтобы было понятно. Можно добавить этот гаджет себе на рабочий стол несколько раз, изменить его параметры, изменить параметры компонента и увидеть как он работает.
Кастомизация рабочего стола.
Осталось только рассмотреть как можно изменить внешний вид рабочего стола. Для этого лучше посмотреть на исходный код шаблона компонента: /bitrix/components/bitrix/desktop/templates/.default/template.php. Он не очень сложный, при желании его можно скопировать и изменить разметку для себя. Но в типичных случаях вполне достаточно переопределить некоторые стили в шаблоне сайта в файле template_styles.css. Примеры таких кастомизаций можно увидеть в новом дистрибутиве КП 8.0, если попробовать разные шаблоны и разные цветовые схемы. Кстати, в новом дистрибутиве КП это можно делать много раз, нажимая кнопку "Мастер настройки" в верхней панели, но об этом нововведении не в этот раз.
Установка рабочего стола после обновления
Если вы координально не изменяли главную страницу портала и страницу "Мой портал", то после обновления они автоматически будут созданы, а старые сохранены с именами "old_". Если этого не случилось - не беда. Можно создать эти страницы вручную, разместить на них компонент и настроить его параметры (большая часть параметров уже будут правильно проставлены, нужно только правильно установить привязки к инфоблокам). После этого пойти на сами страницы, повытаскивать необходимые гаджеты и нажать "сохранить как настройки по умолчанию".
Вроде ничего не забыл. Удачи в освоении и создании новых гаджетов! При желании мы можем организовать конкурс на самый-самый гаджет
Фото:
не сработало, главная страница не изменялась.
google_gadgets
html_area
probki
rssreader
weather
Круто!
Когда удаляется ошибочно добавленный параметр в parameters.php:
то он визуально остается при раскрытии настроек гаджета. Как удалить? Обновление с очисткой кеша не помогает.
Подскажите пожалуйста на простом примере, как создать гаджет с поисковой строкой "Яндекса"