-
Notifications
You must be signed in to change notification settings - Fork 63
Плагины
Плагины позволяют расширить возможности KodiCMS и практически ничем не ограничивают разработчика в работе как с фреймворком Laravel, так и с API CMS
Что можно сделать при помощи плагина:
- Создать раздел в админ панели
- Создать API контроллеры для работы с данными через AJAX
- Создать новый тип виджета (для страниц сайта и для рабочего стола)
- Добавить новые роуты в систему
- Добавить таблицы в БД
- Добавить новые пункты в меню админ панели
- Добавить новый тестовый редактор
Плагины в системе располагаются в папке plugins
. В связи с тем, что разные авторы могут давать одинаковые имена плагинам, то было решено располагать плагины аналогично composer пакетам plugins/author/pluginName
Плагины можно поставлять в виде composer пакетов, для этого в вашем файле composer.json
необходимо указать тип пакета
{
...
"type": "kodicms-plugin",
...
}
после чего он автоматически установится в директорию plugins
Каждый плагин должен обязательно содержать файл PluginContainer.php
, который используется для инициализации плагина.
plugins/
kodicms/ <== Автор
PluginName/ <== Название плагина
...
PluginContainer.php <== Файл инициализации плагина
Директория plugins
по умолчанию имеет namespace Plugins
, поэтому пространство имен в ваших классах должно начинаться с Plugins\author\PluginName\...
namespace Plugins\author\PluginName;
use KodiCMS\Plugins\Loader\BasePluginContainer;
class PluginContainer extends BasePluginContainer
{
/**
* @return array
*
* [
* 'title' => '...',
* 'description' => '...',
* 'author' => '...',
* 'icon' => '...',
* 'version' => '...',
* 'required_cms_version' => '...'
* ]
*/
public function details()
{
return [
'title' => 'PluginName',
'description' => 'PluginName section',
'author' => 'Pavel Buchnev',
'icon' => 'newspaper-o',
'required_cms_version' => '12.0.0',
'settings_template' => 'author:pluginname::settings'
];
}
}
-
title
- Название -
description
- Описание -
author
- Автор -
icon
- Иконка (FontAwesome без префиксаfa-
) -
version
Версия плагина -
required_cms_version
Требуемая версия CMS
Если вы решили использовать собственное пространство имен, то вам необходимо указать его в файле PluginContainer.php
namespace Plugins\butschster\News;
use KodiCMS\Plugins\Loader\BasePluginContainer;
class PluginContainer extends BasePluginContainer
{
...
protected function setNamespace($namespace = null)
{
$this->namespace = 'Your\\Namespace';
}
...
}
Структура плагина аналогична той, что используется в модулях. Структура модуля
Шаблоны и переводы доступны по namespace
author:pluginname
(автор и название плагина нижнем регистре)
Единственное отличие, у плагина не может быть директории для миграции, но есть database\schemas
в которой вы можете поместить файлы аналогичные файлам миграции, пример:
use KodiCMS\Plugins\Loader\PluginSchema;
use Illuminate\Database\Schema\Blueprint;
class NewsContent extends PluginSchema
{
/**
* @return string
*/
public function getTableName()
{
return 'table_name';
}
public function up()
{
Schema::create($this->getTableName(), function (Blueprint $table) {
$table->timestamps();
$table->increments('id');
$table->string('title');
$table->string('slug')->unique();
});
}
public function down()
{
Schema::dropIfExists($this->getTableName());
}
}
Файл схемы необходимо наследовать от KodiCMS\Plugins\Loader\PluginSchema