Создание плагина
Плагины — дополнения, расширяющие возможности портала. Чтобы создать собственный плагин для Light Portal, достаточно следовать инструкциям ниже.
Информация
Вы можете использовать PluginMaker в качестве помощника при создании своих плагинов. Скачайте и подключите его на странице Админка -> Настройки портала -> Плагины.
Выбор типа плагина
На данный момент в Light Portal доступны следующие типы дополнений:
block
Плагины, добавляющие новый вид блоков для портала.
ssi
Плагины (как правило, блоки), использующие SSI-функции для получения данных.
editor
Плагины, добавляющие сторонний редактор для разных типов контента.
comment
Плагины, добавляющие сторонний виджет комментариев, вместо стандартного.
parser
Плагины, реализующие парсер контента страниц и блоков.
article
Плагины для обработки содержимого карточек статей на главной.
frontpage
Плагины для изменения главной страницы портала.
impex
Плагины для импорта и экспорта различных элементов портала.
block_options
| page_options
Плагины, добавляющие дополнительные параметры для соответствующей сущности (блока или страницы).
icons
Плагины, добавляющие новые библиотеки иконок для замены элементов интерфейса или использования в заголовках блоков.
seo
Плагины, тем или иным образом влияющие на видимость форума в сети.
other
Плагины, не входящие ни в одну из категорий выше.
Создание директории плагина
Создайте отдельную папку для файлов вашего дополнения, внутри /Sources/LightPortal/Addons
. Например, если ваш плагин называется HelloWorld
, структура папки должна выглядеть так:
...(Addons)
└── HelloWorld/
├── langs/
│ ├── english.php
│ └── index.php
├── index.php
└── HelloWorld.php
Файл index.php
можно скопировать из папок других дополнений. файле HelloWorld.php
содержится логика плагина:
<?php
/**
* HelloWorld.php
*
* @package HelloWorld (Light Portal)
* @link https://custom.simplemachines.org/index.php?mod=4244
* @author Никнейм <email>
* @copyright 2023 Никнейм
* @license https://spdx.org/licenses/GPL-3.0-or-later.html GPL-3.0-or-later
*
* @category addon
* @version 15.02.24 (дата создания, а в дальнейшем — обновления кода плагина, в формате дд.мм.гг)
*/
namespace Bugo\LightPortal\Addons\HelloWorld;
use Bugo\Compat\{Config, Lang, Utils};
use Bugo\LightPortal\Addons\Plugin;
if (! defined('LP_NAME'))
die('No direct access...');
class HelloWorld extends Plugin
{
// Используемые свойства и методы
// Доступ к глобальным переменным: Utils::$context['user'], Config::$modSettings['variable'], etc.
// Доступ к языковым переменным: Lang::$txt['lp_hello_world']['variable_name']
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Использование SSI
Если в плагине требуется получить какие-либо данные с помощью SSI-функций, используйте метод getFromSsi(string $function, ...$params)
. В качестве параметра $function
нужно передать имя одной из функций, находящихся в файле SSI.php, без приставки ssi_
. Например:
<?php
// См. функцию ssi_topTopics в файле SSI.php
$data = $this->getFromSsi('topTopics', 'views', 10, 'array');
Использование Composer
Ваш плагин может использовать сторонние библиотеки, устанавливающиеся через Composer. Убедитесь, что в директории плагина расположен файл composer.json
, в котором указаны необходимые зависимости. Перед публикацией вашего плагина откройте директорию плагина в командной строке и выполните команду: composer install --no-dev -o
. После этого всё содержимое директории плагина можно упаковать как отдельную модификацию для SMF (для примера см. пакет PluginMaker).