В одной из старых статей для журнала Веб-Аналитик.ИНФО я расписал очень простой рецепт создания гаджета. Конечно же, гаджет выполнял крайне полезную функцию — показывал текущую дату с помощью стандартной функции php date, но все же на этом примере легко разобраться как же программировать гаджеты.
С тех пор прошло достаточно много времени и Битрикс сделал новую фичу (вообще это произошло достаточно давно) — настраиваемые рабочие столы панели управления. И, что крайне удобно, в них можно использовать те же гаджеты, которые мы возможно запрограммировали для рабочих столов для пользователей. Но, что еще более важно и вдохновляюще — мы можем программировать теперь какие-то новые административные функции с помощью гаджетов.
А это значит, что не требуется писать код подключаемого модуля, не требуется писать административные страницы, которые достаточно сложны, не требуется писать инсталляцию скриптов модуля, скриптов доступа к административным скриптам и прочее, прочее.
Думаю, я убедил, что гаджет может в каких-то случаях помочь в обеспечении каких-то административных функций.
Что же можно сделать при помощи гаджета в панели управления?
Попробую взять какой-то несложный пример, такой чтобы я смог его запрограммировать достаточно красиво, чтобы читатель блога не запутался в моем коде.
Вот такой пример возьмем: нам требуется для сайта создать некий конфиг и для заказчика должна быть возможность оперативно править его.
Для начала вспомним структуру файлов гаджета:
Файл | Описание |
.description.php | Файл описания гаджета. В нем задается название гаджета, его описание и место в структуре гаджетов. |
.parameters.php | Файл с параметрами гаджета. Параметры разделены на те, которые может настраивать пользователь и те, которые может настраивать только администратор. |
Index.php | Исполняемый код гаджета. |
lang/ | Папка, служащая для локализации гаджета. |
Соответственно для нашего нового гаджета возьмем такую структуру:
/bitrix/gadgets/dv/
/bitrix/gadgets/dv/editconfig/
/bitrix/gadgets/dv/editconfig/.description.php
/bitrix/gadgets/dv/editconfig/.parameters.php
/bitrix/gadgets/dv/editconfig/index.php
файл .description.php содержит описание гаджета:
< ? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); $arDescription = Array( "NAME"=>“Редактирование конфига сайта”, “DESCRIPTION”=>”Гаджет предназначен для редактирования главного конфига сайта”, “ICON”=>”", “GROUP”=> Array(“ID”=>”personal”), “NOPARAMS”=>”Y”, “SU”=> true, “SG”=> true ); ?>
файл .parameters.php содержит параметры гаджета — у нас он содержит одну строку:
< ?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
файл index.php — исполняемый код гаджета:
< ? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); ?> <? // $config_file = путь_к_файлу_конфига; if ($_POST) { file_put_contents($config_file, $_POST["text"]); } $config = file_get_contents($config_file); ?> <form method="post"> <textarea name="text"><?=$config?></textarea><br> <input type="submit" name="save" value="Сохранить"> </form>
Взят очень умозрительный пример с кучей вещей, которые следует дорабатывать. Но как пример использования гаджета в панели управления он вполне может подойти. В переменной $config_file следует разместить путь до файла конфига от корня операционки и после этого разместить гаджет стандартным способом на рабочем столе в панели управления.