There are 2 ways to have plugin settings. I don't mean the single component settings within a plugin, but settings that are covering the complete plugin.
This is the most easy one. You create a file config.php
in the folder config
of your plugin. This file looks something like this:
<?php
return [
/**
* position of the button
* allowed values: 'tr', 'tl', 'br', 'bl'
*/
'position' => 'tr',
/**
* Show label
* allowed values: false, true
*/
'showLabel' => true,
/**
* Edit URL
* {id} is substitutet with blog post id
*/
'editUrl' => 'rainlab/blog/posts/update/{id}'
];
<?php
namespace Enovision\FrontendEdit\Components;
use Config;
class EditButton extends \Cms\Classes\ComponentBase {
public $position;
public $showLabel;
public $editUrl;
...
public function onRun() {
...
// $x = Config::get(parameter, default);
$this->position = Config::get( 'enovision.frontendedit::position', 'tr' );
$this->showLabel = Config::get( 'enovision.frontendedit::showlabel', true );
$this->editUrl = Config::get( 'enovision.frontendedit::editUrl', true );
....
}
}
These settings are available at the backend settings (click settings in the settings menu) and could look like:
The setting fields we describe in a file named fields.yaml
in the folder models\settings
of your plugin. If the folder models
doesn't exist you have to create it first.
Sample of fields.yaml
# ===================================
# Form Field Definitions
# ===================================
fields:
plugin_enabled:
label: Enabled
disabled: false
type: switch
default: false
span: auto
comment: Plugin is enabled?
position:
label: Position
disabled: false
default: tr
type: dropdown
options:
tr: Top Right
tl: Top Left
br: Bottom Right
bl: Bottom Left
span: auto
comment: Position of the button on the display
show_label:
label: Show Label
disabled: false
type: switch
default: true
span: auto
comment: Show the button label?
show_icon:
label: Show Icon
disabled: false
type: switch
default: true
span: auto
comment: Show the icon on the button? When this and label are both false, label is used automatically
button_label:
label: Button Label
type: text
required: false
default: Edit Post
span: auto
comment: Text to put on the label, default "Edit Post"
edit_url:
label: Edit Url (don't change this if you not must)
type: text
default: rainlab/blog/posts/update/{id}
span: auto
comment: This has to be always "rainlab/blog/posts/update/{id}"
The indentions are fixed 4 blanks!
Now we have to create a model named Settings.php
in the models
folder.
Sample of the model:
<?php namespace Enovision\FrontendEdit\Models;
use October\Rain\Database\Model;
class Settings extends Model {
public $implement = [
'System.Behaviors.SettingsModel',
'@RainLab.Translate.Behaviors.TranslatableModel',
];
public $settingsCode = 'enovision_frontendedit_settings';
public $settingsFields = 'fields.yaml';
}
See documentation here
<?php
namespace Enovision\FrontendEdit\Components;
use Enovision\FrontendEdit\Models\Settings;
class EditButton extends \Cms\Classes\ComponentBase {
public $position;
public $showLabel;
public $editUrl;
...
public function onRun() {
...
// $x = Settings::get(parameter, default);
$this->position = Settings::get( 'position', 'tr' );
$this->showLabel = Settings::get( 'show_label', true );
$this->editUrl = Settings::get( 'edit_url', true );
....
}
}