Часто бывает достаточно использовать настройки активной темы, но в ряде случаев необходимо создать именно отдельную страницу с настройками, валидацией и разрешениями на редактирование.
Для всех этих дел необходимо сразу создать плагин с моделью.
php artisan create:plugin Site21.BaseCode
php artisan create:model Site21.BaseCode Settings
Далее в своем плагине добавляем:
public function registerSettings()
{
return [
'settings' => [
'label' => 'Мои настройки',
'description' => 'Описание плагина',
'category' => 'Категория плагина',
'icon' => 'icon-line-chart',
'class' => 'Site21\BaseCode\Models\Settings',
'order' => 500,
'keywords' => 'кастомные мои основные настройки',
'permissions' => ['site21.basecode.access_settings']
]
];
}
С label, description и category думаю ясно, но стоит их писать через e(trans(''))
Возможные значения icon можете найти на офиц. сайте octobercms.
Здесь же в плагине добавляем разрешение на редактирование страницы с настройками.
public function registerPermissions()
{
return [
'site21.basecode.access_settings' => [
'tab' => 'BaseCode',
'label' => 'Редактировать кастосные настройки'
],
];
}
В созданной на 1 этапе моделе пишем (файл находится по адресу /plugins/site21/models/Settings.php):
public $implement = ['System.Behaviors.SettingsModel'];
// уникальный код
public $settingsCode = 'site21_basecode_settings';
// путь к файлу с полями
public $settingsFields = 'fields.yaml';
Теперь последним этапом создадим саму форму в файле /plugins/site21/models/settings/fields.yaml Как это можно сделать можем увидеть на все там же, на сайте октября. Примером покажу:
fields:
show_block:
label: Показывать блок на сайте?
type: checkbox
default: false
title:
label: Заголовок блока
comment: Выводится на сайте
span: left
default: Блог Валерия Малышева
count:
label: Количество постов
comment: Сколько постов должно выводиться в этом блоке
type: number
span: right
default: 5
Все готово!
Разрешение создано, страница работает.
Для того чтобы вывести какую-либо настройку на сайте нужно обратиться к созданной моделе:
use Site21\BaseCode\Models\Settings;
==
$value = Settings::get('title');
Опубликовано 19 марта 2021 г. в категориях: October CMS Winter CMS
Если Вам необходимо внедрить данную разработку на свой проект, свяжитесь со мной, обсудим цену и срок.