Настройки плагина
Содержание
Вам нужно выполнить несколько дополнительных шагов, если вашему плагину нужно сохранять и управлять настройками через панель администрирования:
Создайте файл в папке представления по умолчанию вашего плагина с именем
plugins/your_plugin/settings.php, гдеyour_plugin— это имя каталога вашего плагина в иерархииmodЗаполните этот файл элементами формы, которые вы хотите отобразить, вместе с интернационализированными текстовыми метками
Установите атрибут name в компонентах вашей формы в
params[`varname`], гдеvarname— это имя переменной. Они будут сохранены как метаданные, прикреплённые к сущности плагина. Таким образом, если ваша переменная называетсяparams[myparameter], ваш плагин (который также передаётся в это представление как$vars['entity']) будет называться$vars['entity']->myparameter
Пример settings.php будет выглядеть так:
echo elgg_view_field([
'#type' => 'select',
'#label' => elgg_echo('myplugin:settings:limit'),
'name' => 'params[limit]',
'value' => $vars['entity']->limit,
'options' => [5,8,12,15],
]);
Примечание
Вам не нужно добавлять кнопку сохранения или форму, это будет сделано фреймворком.
Примечание
Вы не можете использовать компоненты формы, которые не отправляют значение, когда «выключены». К ним относятся радио-кнопки и чекбоксы.
Если настройки вашего плагина требуют очистки кэша, вы можете добавить (скрытый) ввод в форму с именем „flush_cache“ и значением „1“
elgg_view_field([
'#type' => 'hidden',
'name' => 'flush_cache',
'value' => 1,
]);
Настройки пользователя
Вашему плагину может также потребоваться хранить настройки для каждого пользователя, и вы хотите, чтобы опции вашего плагина отображались на странице настроек пользователя. Это также легко сделать и следует той же схеме, что и настройка глобальной конфигурации плагина, объяснённая ранее. Единственное отличие в том, что вместо использования файла settings вы будете использовать usersettings. Таким образом, путь к представлению редактирования пользователя для вашего плагина будет plugins/<your_plugin>/usersettings.php.
Примечание
Заголовок формы usersettings по умолчанию будет равен имени плагина. Если вы хотите изменить это, добавьте перевод для <plugin_id>:usersettings:title.
Настройки группы
Если вашему плагину нужны настройки для каждой группы, вы можете расширить представление groups/edit/settings, чтобы показать ваши настройки. Настройки отображаются при создании и редактировании группы. Чтобы настройки сохранялись правильно, им нужно имя в формате settings[<plugin id>][<setting name>].
Получение настроек в вашем коде
Чтобы получить настройки из вашего кода, используйте:
$setting = elgg_get_plugin_setting($name, $plugin_id);
или для настроек пользователя:
$user_setting = elgg_get_plugin_user_setting($name, $user_guid, $plugin_id);
// or
$user = get_user($user_guid);
$user_setting = $user->getPluginSetting($plugin_id, $name);
где:
$name— это значение, которое вы хотите получить$user_guid— это пользователь, для которого вы хотите получить эти настройки (по умолчанию — текущий авторизованный пользователь)$plugin_name— это имя плагина (определяется, если выполняется из плагина)
или для настроек группы:
$group = get_entity($group_guid);
$value = $group->getPluginSetting('<plugin id>', '<setting name>');
Установка значений в коде
Значения также могут быть установлены из кода вашего плагина, для этого используйте одну из следующих функций:
$plugin = elgg_get_plugin_from_id($plugin_id);
$plugin->setSetting($name, $value);
или для настроек пользователя:
$user = elgg_get_logged_in_user_entity();
$user->setPluginSetting($plugin_id, $name, $value);
или для настроек группы:
$group = get_entity($group_guid);
$group->setPluginSetting($plugin_id, $name, $value);
Предупреждение
$plugin_id необходимо предоставить при установке настроек плагина (пользователя).
Настройки плагина (группы|пользователя) по умолчанию
Если у плагина или пользователя нет настройки, сохранённой в базе данных, иногда вам нужно определённое значение по умолчанию. Вы можете передать это при использовании функций получения.
$user_setting = elgg_get_plugin_user_setting($name, $user_guid, $plugin_id, $default);
$plugin_setting = elgg_get_plugin_setting($name, $plugin_id, $default);
$group_setting = $group->getPluginSetting($plugin_id, $name, $default);
В качестве альтернативы вы также можете предоставить настройки плагина и пользователя по умолчанию в файле elgg-plugin.php.
<?php
return [
'settings' => [
'key' => 'value',
],
'user_settings' => [
'key' => 'value',
],
];
Примечание
Настройки группы не имеют значения по умолчанию, доступного в файле elgg-plugin.php.