ExBB Community » » Обсуждение » Реализация плагинов в ExBB

Страниц (3): [1] 2 3 »
 

1. WebMaster - 13 октября 2013 — 17:52 - перейти к сообщению
Хочу добавить поддержку плагинов в движок.
Преимущества плагинов:
- Автоматические установка и удаление без необходимости править код
- Возможность расширять функционал путём обработки событий(хуков)

Сейчас сделано:
- Автоматическая загрузка и инициализация установленных плагинов.
- Возможность добавить новый плагин вручную(указать папку с плагинов в админ-панели)
- Создание событий
- Обработка событий

Сейчас делается:
- Возможность управления плагинами(страница настройки)
- Удаление, авто-установка
- Включение/отключение плагина из админ-панели.

С помощью плагинов можно довольно легко добавить подсветку синтаксиса, bb-коды и многое другое.
Пример регистрации события:
CODE:
plugins::setAction('test');


Теперь обработка этого события из плагина:
CODE:

//Функция-обработчик
function handler() {
echo "Hello, World";
}
//Регистрация обработчика
plugins::setHandler('handler', 'test');


Хотел бы узнать, стоит ли продолжать разрабатывать это дополнение?
2. NordWest - 13 октября 2013 — 17:58 - перейти к сообщению
Штука была бы крайне нужная, т.к. именно необходимость руками ковыряться в коде часто приводит к разным неожиданностям и лучше бы этот процесс автоматизировать.

Но я если честно не вижу, как это можно реализовать без коренной перестройки движка.
3. Amri - 13 октября 2013 — 18:00 - перейти к сообщению
Думаю, что это очень даже неплохо Здорово
4. WebMaster - 13 октября 2013 — 18:07 - перейти к сообщению
Цитата:
Но я если честно не вижу, как это можно реализовать без коренной перестройки движка.

Для начала можно зарегистрировать несколько событий в основных функциях движка, например при выводе/добавлении сообщений, регистрации пользователя и т.д.. При этом не придётся перестраивать движок.
А подключение я сделал так:
1) В файле common.php подключается n_lib.php
2) В файле n_lib.php содержится класс, который отвечает за работу с плагинами.
3) С помощью этого класса в начале работы движка подключаются все активные плагины.
5. NordWest - 13 октября 2013 — 18:33 - перейти к сообщению
Как это будет работать? Просто хочется понять алгоритм...
Вставляем в важные места код, который генерирует события. Как это будет происходить на уровне кода? Будут устанавливаться определённые переменные, состояние которых в дальнейшем будет анализироваться?
6. WebMaster - 13 октября 2013 — 18:48 - перейти к сообщению
Цитата:
Как это будет работать? Просто хочется понять алгоритм...
Вставляем в важные места код, который генерирует события. Как это будет происходить на уровне кода? Будут устанавливаться определённые переменные, состояние которых в дальнейшем будет анализироваться?

При регистрации события происходит такой процесс:
1) Для самой регистрации вызывается статическая функция setAction('Название события', [Параметры, доступные для обработчика]) класса plugins
2) После этого проверяются зарегистрированные ранее обработчики. Если существует обработчик для этого события, то он выполняется.
- Обработчиков может быть неограниченное количество.
- Обработчик должен быть зарегистрирован раньше, чем само событие, иначе он просто не выполнится. Поэтому все плагины загружаются при старте движка.

Т.е. при создании события проверяется, есть ли для него обработчики и если да, то они выполняются.
7. NordWest - 13 октября 2013 — 18:57 - перейти к сообщению
WebMaster пишет:
Т.е. при создании события проверяется, есть ли для него обработчики и если да, то они выполняются.
Понял.
(Добавление)
Плохо, что форум запускается не через единый файл - было бы проще.
8. CAB - 13 октября 2013 — 19:52 - перейти к сообщению
WebMaster пишет:
все плагины загружаются при старте движка
Насколько данный метод замедлит генерацию страниц? Не будет ли это критично для быстродействия?
9. 1Bot - 14 октября 2013 — 03:26 - перейти к сообщению
WebMaster
Затея интересная, но потребует модификации всего кода. Функционал это конечно разнообразит и стандартизует, но всегда найдутся плагины, которые будут нестандартными Радость

Необходимо добавить зависимости между плагинами (один плагин требует наличия другого с определенными свойствами и событиями) и добавить понятие контекста событий (например, главная страница / страница форума / страница темы / элемент страницы / вспомогательные страницы / админ-центр / другие).

Список можно продолжать, но его нужно стандартизировать для совместимости плагинов до их написания/переделки.

WebMaster
CAB пишет:
Насколько данный метод замедлит генерацию страниц?

Минимум раз в 10. Такое замедление в основном вызвано проверкой контекста и активности плагинов и запуском необходимых событий, Цепочками создания и отработки зависимых событий и т.д.
10. BON - 14 октября 2013 — 04:12 - перейти к сообщению
WebMaster, к этмоу как то и шло. Если надо как нибудь состыкуемся в скайпе и переговорим с ещё одним админом. Он пояснит некоторые моменты.
11. NordWest - 14 октября 2013 — 05:31 - перейти к сообщению
1Bot пишет:
Минимум раз в 10.
Плохо. Так сильно потерять в быстродействии я как то был не готов. Огорчение
12. WebMaster - 14 октября 2013 — 07:10 - перейти к сообщению
Цитата:
Минимум раз в 10. Такое замедление в основном вызвано проверкой контекста и активности плагинов и запуском необходимых событий, Цепочками создания и отработки зависимых событий и т.д.

Я использовал такую систему в самодельном движке на PHP. При этом данные о плагинов хранились в базе данных. Особой разницы в скорости с плагинами и без них не заметил...
13. WebMaster - 14 октября 2013 — 12:05 - перейти к сообщению
Доделал систему. Пробовал добавлять пункты в меню администратора, добавлять обработчики для bb-кодов.

Выкладываю скрипт автоматической интеграции системы плагинов с ExBB FM 1.0 Final.
Как установить систему плагинов (Отобразить)
14. BON - 14 октября 2013 — 14:46 - перейти к сообщению
WebMaster пишет:

так а плагины будет есть те которые уже существуют или под него надо свои писать?

ну ты ваще монтср в хорошем смысле словаУлыбка
15. WebMaster - 14 октября 2013 — 14:50 - перейти к сообщению
Цитата:
так а плагины будет есть те которые уже существуют или под него надо свои писать?

Существующие моды можно устанавливать отдельно и они никак не пересекаются с плагинами.

Если моя разработка будет пользоваться спросом, я напишу подробную документацию по плагинам(другим разработчикам будет легче начать).

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.022]     [ ]