Инструменты пользователя

Инструменты сайта


основы_плагинов

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Последняя версия Следующая версия справа и слева
основы_плагинов [24.12.2018 17:19]
vladimir Переведен блок Хуки с аргументами
основы_плагинов [24.12.2018 17:37]
vladimir Переведен блок Adding Settings
Строка 167: Строка 167:
 }</sxh> }</sxh>
 Вам нужно будет проверить контекст, в котором вызывается хук, чтобы определить, нужно ли возвращать аргумент обратно, или он должен быть изменен по ссылке. Вам нужно будет проверить контекст, в котором вызывается хук, чтобы определить, нужно ли возвращать аргумент обратно, или он должен быть изменен по ссылке.
 +===== Другие варианты хука =====
 +Есть еще два необязательных аргумента, которые можно передать в ''$plugins->add_hook()'': priority и file.
 +Например:
 +<sxh php>$plugins->add_hook('<hook name>', '<function name>', '<priority>', '<file>');
 +
 +// With values
 +$plugins->add_hook('index_start', 'do_something', 5, 'anotherfile.php');</sxh>
 +''<Priority>'' учитывает, есть ли две или более функции, связанные с обработчиком. Меньшее значение в параметре priority будет означать, что функция будет выполнена раньше других функций с более высоким приоритетом (например, приоритет ''0'' будет выполняться до ''10''). Приоритет по умолчанию ''10''. Обычно вам не нужно будет использовать этот параметр, если у вас нет двух плагинов, которые конфликтуют друг с другом в одном хуке.
 +
 +Имя файла в параметре ''<file>'' будет ''included-once'' при запуске хука, перед выполнением функции.
 +===== Настройки плагина =====
 +Плагины могут создавать настройки, которые интегрируются с вкладкой "конфигурация" ACP. Общие параметры плагина должны быть реализованы с помощью этого метода для обеспечения согласованности между плагинами.
 +
 +Настройки обычно добавляются и удаляются в методах ''_install()'' и ''_uninstall()'' соответственно, так что плагин может быть деактивирован без потери настроек.
 +===== Добавление настроек =====
 +Для создания параметров необходимо сначала создать группу параметров и получить ее идентификатор:
 +<sxh php>global $db, $mybb;
 +
 +$setting_group = array(
 +    'name' => 'mysettinggroup',
 +    'title' => 'My Plugin Settings',
 +    'description' => 'This is my plugin and it does some things',
 +    'disporder' => 5, // The order your setting group will display
 +    'isdefault' => 0
 +);
 +
 +$gid = $db->insert_query("settinggroups", $setting_group);</sxh>
 +Теперь вы можете добавить некоторые настройки в группу:
 +<sxh php>$setting_array = array(
 +    // A text setting
 +    'fav_colour' => array(
 +        'title' => 'Favorite Colour',
 +        'description' => 'Enter your favorite colour:',
 +        'optionscode' => 'text',
 +        'value' => 'Blue', // Default
 +        'disporder' => 1
 +    ),
 +    // A select box
 +    'green_good' => array(
 +        'title' => 'Is green good?',
 +        'description' => 'Select your opinion on whether green is good:',
 +        'optionscode' => "select\n0=Yes\n1=Maybe\n2=No",
 +        'value' => 2,
 +        'disporder' => 2
 +    ),
 +    // A yes/no boolean box
 +    'enable_lasers' => array(
 +        'title' => 'Enable lasers?',
 +        'description' => 'Do you want the lasers turned on?',
 +        'optionscode' => 'yesno',
 +        'value' => 1,
 +        'disporder' => 3
 +    ),
 +);
 +
 +foreach($setting_array as $name => $setting)
 +{
 +    $setting['name'] = $name;
 +    $setting['gid'] = $gid;
 +
 +    $db->insert_query('settings', $setting);
 +}
 +
 +// Don't forget this!
 +rebuild_settings();</sxh>
 +Следующий тип поля настройки (он же. код опций) поддерживает значения:
 +  * text : обычное текстовое поле
 +  * numeric : числовое поле
 +  * textarea : большое текстовое поле
 +  * yesno : логическое значение да/нет
 +  * onoff : логическое управление вкл/выкл
 +  * select : поле выбора (в формате select с последующим = по одному в новой строке)
 +  * forumselect : встроенный переключатель + флажок для выбора форумов
 +  * forumselectsingle : встроенный флажок, чтобы выбрать только один форум
 +  * groupselect : встроенный переключатель + флажок для выбора групп
 +  * groupselectsingle : встроенный флажок, чтобы выбрать только одну группу пользователей
 +  * radio : набор переключателей (в формате select, за которым следует = с одним в новой строке)
 +  * checkbox : логическое поле checkbox
 +  * language : выбор языка
 +  * adminlanguage : язык админ панели
 +  * cpstyle : выбор темы
 +  * php : php код
 +
 +Если вы установите плагин, вы теперь сможете увидеть вашу новую группу настроек и ее настройки на вкладке “конфигурация” ACP.
 +
 +Вы можете открыть эти значения через ''$mybb->settings['<setting name>']'', например ''$mybb->settings['enable_lasers']''.
основы_плагинов.txt · Последнее изменение: 24.12.2018 17:41 — vladimir