Настройки плагина

Вам нужно выполнить несколько дополнительных шагов, если вашему плагину нужно сохранять и управлять настройками через панель администрирования:

  • Создайте файл в папке представления по умолчанию вашего плагина с именем 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.