ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList


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

> Опрос
Нужна ли поддержка плагинов в ExBB?
Для голосования и просмотра результатов опроса войдите или зарегистрируйтесь

> Описание: Реализация плагинов в ExBB
WebMaster
Отправлено: 13 октября 2013 — 17:52
Post Id



Модератор
Advanced Member


Покинул форум
Сообщений всего: 428
Дата рег-ции: Окт. 2013  
Репутация: 32




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

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

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

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


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

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


Хотел бы узнать, стоит ли продолжать разрабатывать это дополнение?
 
 
NordWest
Отправлено: 13 октября 2013 — 17:58
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




Штука была бы крайне нужная, т.к. именно необходимость руками ковыряться в коде часто приводит к разным неожиданностям и лучше бы этот процесс автоматизировать.

Но я если честно не вижу, как это можно реализовать без коренной перестройки движка.
 
 
Amri
Отправлено: 13 октября 2013 — 18:00
Post Id



Пользователь
Newbie


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2013  
Репутация: 0




Думаю, что это очень даже неплохо Здорово
 
 
WebMaster
Отправлено: 13 октября 2013 — 18:07
Post Id



Модератор
Advanced Member


Покинул форум
Сообщений всего: 428
Дата рег-ции: Окт. 2013  
Репутация: 32




Цитата:
Но я если честно не вижу, как это можно реализовать без коренной перестройки движка.

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



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




Как это будет работать? Просто хочется понять алгоритм...
Вставляем в важные места код, который генерирует события. Как это будет происходить на уровне кода? Будут устанавливаться определённые переменные, состояние которых в дальнейшем будет анализироваться?
 
 
WebMaster
Отправлено: 13 октября 2013 — 18:48
Post Id



Модератор
Advanced Member


Покинул форум
Сообщений всего: 428
Дата рег-ции: Окт. 2013  
Репутация: 32




Цитата:
Как это будет работать? Просто хочется понять алгоритм...
Вставляем в важные места код, который генерирует события. Как это будет происходить на уровне кода? Будут устанавливаться определённые переменные, состояние которых в дальнейшем будет анализироваться?

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

Т.е. при создании события проверяется, есть ли для него обработчики и если да, то они выполняются.
 
 
NordWest
Отправлено: 13 октября 2013 — 18:57
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




WebMaster пишет:
Т.е. при создании события проверяется, есть ли для него обработчики и если да, то они выполняются.
Понял.
(Добавление)
Плохо, что форум запускается не через единый файл - было бы проще.
 
 
CAB
Отправлено: 13 октября 2013 — 19:52
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 629
Дата рег-ции: Февр. 2011  
Откуда: Москва
Репутация: 30




WebMaster пишет:
все плагины загружаются при старте движка
Насколько данный метод замедлит генерацию страниц? Не будет ли это критично для быстродействия?
 
 
1Bot
Отправлено: 14 октября 2013 — 03:26
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 771
Дата рег-ции: Апр. 2009  
Откуда: Днепропетровск
Репутация: 69




WebMaster
Затея интересная, но потребует модификации всего кода. Функционал это конечно разнообразит и стандартизует, но всегда найдутся плагины, которые будут нестандартными Радость

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

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

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

Минимум раз в 10. Такое замедление в основном вызвано проверкой контекста и активности плагинов и запуском необходимых событий, Цепочками создания и отработки зависимых событий и т.д.
 
 
BON
Отправлено: 14 октября 2013 — 04:12
Post Id



Администратор
ExBB Team
Admin


Покинул форум
Сообщений всего: 2761
Дата рег-ции: Нояб. 2010  
Откуда: СССР/Белгород
Репутация: 71




WebMaster, к этмоу как то и шло. Если надо как нибудь состыкуемся в скайпе и переговорим с ещё одним админом. Он пояснит некоторые моменты.
 
 
NordWest
Отправлено: 14 октября 2013 — 05:31
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




1Bot пишет:
Минимум раз в 10.
Плохо. Так сильно потерять в быстродействии я как то был не готов. Огорчение
 
 
WebMaster
Отправлено: 14 октября 2013 — 07:10
Post Id



Модератор
Advanced Member


Покинул форум
Сообщений всего: 428
Дата рег-ции: Окт. 2013  
Репутация: 32




Цитата:
Минимум раз в 10. Такое замедление в основном вызвано проверкой контекста и активности плагинов и запуском необходимых событий, Цепочками создания и отработки зависимых событий и т.д.

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



Модератор
Advanced Member


Покинул форум
Сообщений всего: 428
Дата рег-ции: Окт. 2013  
Репутация: 32




Доделал систему. Пробовал добавлять пункты в меню администратора, добавлять обработчики для bb-кодов.

Выкладываю скрипт автоматической интеграции системы плагинов с ExBB FM 1.0 Final.
Как установить систему плагинов (Отобразить)


Скачать файл: (для скачивания файла Войдите или зарегистрируйтесь)
Скачан раз: 76
 
 
BON
Отправлено: 14 октября 2013 — 14:46
Post Id



Администратор
ExBB Team
Admin


Покинул форум
Сообщений всего: 2761
Дата рег-ции: Нояб. 2010  
Откуда: СССР/Белгород
Репутация: 71




WebMaster пишет:

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

ну ты ваще монтср в хорошем смысле словаУлыбка
 
 
WebMaster
Отправлено: 14 октября 2013 — 14:50
Post Id



Модератор
Advanced Member


Покинул форум
Сообщений всего: 428
Дата рег-ции: Окт. 2013  
Репутация: 32




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

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

Если моя разработка будет пользоваться спросом, я напишу подробную документацию по плагинам(другим разработчикам будет легче начать).
 
 
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Обсуждение »

> Похожие темы: Реализация плагинов в ExBB
Темы Форум Информация о теме Обновление
Мод: Похожие темы
Совместимость: ExBB FM 1.0 (версии: RC1, RC2 )
Модификации и дополнения Ответов: 37
Автор темы: Иван Петров
8 сентября 2012 — 14:27
Автор: wasp
Подфорумы
Имеется ли реально работающий мод «Подфорумы» для Exbb.FM.RC1
Обсуждение Ответов: 3
Автор темы: fdg
16 ноября 2009 — 07:03
Автор: fdg
Перспективы дальнейшего развития
Отказ от ExBB FM 1.0 и переход на ExBB FM 1.1 и ExBB 2.0
Новости Ответов: 217
Автор темы: yura3d
24 июля 2012 — 16:59
Автор: electron
Мод: Чат на форуме (Beta)
Ajax-чат для ExBB FM
Модификации и дополнения Ответов: 252
Автор темы: yura3d
26 октября 2009 — 19:17
Автор: electron
Ротатор рекламного кода на php
для блоков из темы http://exbb.info/community/topic.php?forum=9&topic=40
PHP/Perl Ответов: 1
Автор темы: variant0
18 февраля 2015 — 07:32
Автор: SanGer
 



Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




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

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0917]     [ ]