В одной из старых статей для журнала Веб-Аналитик.ИНФО я расписал очень простой рецепт создания гаджета. Конечно же, гаджет выполнял крайне полезную функцию — показывал текущую дату с помощью стандартной функции 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 следует разместить путь до файла конфига от корня операционки и после этого разместить гаджет стандартным способом на рабочем столе в панели управления.