Страниц (26): В начало « ... 18 19 20 21 22 23 24 [25] 26 »
Найдено сообщений: 390 |
WebMaster |
Отправлено: 21 октября 2013 — 16:32 • Тема: Принципиально новая сборка ExBB • Форум: Обсуждаем |
Ответов: 178 Просмотров: 0
|
Цитата:думаю что при такой перестройке возможность конвертации или обновления нельзя исключать, народ владеющий сегодняшней версией будет желать перейти на нечто новое и более стабильное.
Если сделаю новую сборку, напишу плагин для конвертации старой базы данных в новый формат |
WebMaster |
Отправлено: 21 октября 2013 — 15:46 • Тема: Принципиально новая сборка ExBB • Форум: Обсуждаем |
Ответов: 178 Просмотров: 0
|
Цитата:Большой труд Вам предстоит. Готовы ли Вы к этому?
Я понимаю, что это займёт не одну неделю. Готов.
Цитата:Самый лучший вариант - не делать новые сборки-переборки, а создавать новый двиг вообще. новое с нуля. тот двиг что есть сейчас уже морально устарел.
Можно сделать на каком-нибудь фреймворке или написать вообще с нуля.
Цитата:Если и ориентироваться на события от пользователя, то все плагины нужно "загнать" на обработку AJAX-вызовов.
Для начала само ядро форума должно работать на AJAX, и только после этого можно будет обрабатывать AJAX запросы плагинами.
Цитата:
Я в общем всё уже высказывал ранее: нужно взять чистое ядро (оно ещё огого! и уже оптимизировано) и навесить на него плагины. Не забудьте предусмотреть возможность задания очерёдности выполнения плагинов для одного и того же. Да и самое главное оптимизация по скорости генерации страниц и нагрузке на сервер.
Попробую скачать чистую версию без модов и в неё интегрировать систему плагинов.
И ещё такой вопрос.
В файле n_lib.php, возможности которого используют плагины есть функции read и write, которые предназначены для чтения данных из файла и записи данных в файл.
Для их реализации вместо обычного fopen() я использую file_get_contents() и file_put_contents(). Возможно ли при их использовании обнуление файлов? |
WebMaster |
Отправлено: 21 октября 2013 — 12:39 • Тема: Принципиально новая сборка ExBB • Форум: Обсуждаем |
Ответов: 178 Просмотров: 0
|
Хочу сделать принципиально новую сборку, выслушаю ваши предложения по поводу неё.
Планы такие:
- Возможно, переделаю скрипт под единую точку входа(через index.php?action=модуль).
- Внедрю свою систему плагинов(+ регистрация событий)
- Весь функционал будет разбит по компонентам. Компонентами можно будет управлять из админ-панели(включение/выключение, установка, удаление)
Эти нововведения облегчат дальнейшую разработку форума и добавление нового функционала.
Вследствие таких модернизаций моды, которые существуют сейчас станут несовместимы с этой сборкой.
Как думаете, имеет ли это смысл? |
WebMaster |
Отправлено: 21 октября 2013 — 11:42 • Тема: Документация по плагинам • Форум: Обсуждение |
Ответов: 18 Просмотров: 0
|
Цитата:Может для начала стандартизировать места вызова событий, а уж потом "навешивать" на них обработчики?
Желательно. Можно составить список самых необходимых используемых событий. А потом, когда появится больше плагинов можно сделать сборку, в которой уже будут зарегистрированы события и установлены некоторые плагины(но отключены по-умолчанию). |
WebMaster |
Отправлено: 21 октября 2013 — 09:54 • Тема: Документация по плагинам • Форум: Обсуждение |
Ответов: 18 Просмотров: 0
|
В этом и заключается вся сложность.
Насчёт очерёдности выполнения, есть вариант указывать приоритет при регистрации функции-обаботчика.
CODE:plugins::setHandler('handler', 'parse_message', 10);
Тогда сначала должны выполняться обработчики с более высоким приоритетом, а потом обработчики с более низким. |
WebMaster |
Отправлено: 21 октября 2013 — 08:47 • Тема: Документация по плагинам • Форум: Обсуждение |
Ответов: 18 Просмотров: 0
|
CAB, сейчас работаю над этим.
В следующей версии системы плагинов сделаю функцию для загрузки файла локализации.
А сейчас можно вручную загружать локализацию.
CODE:include 'plugins/wordlinks/lang/rus.php';
Как вы предлагаете реализовать взаимодействие между плагинами? |
WebMaster |
Отправлено: 21 октября 2013 — 08:42 • Тема: Плагин "Слова-ссылки" • Форум: Плагины |
Ответов: 24 Просмотров: 0
|
1) Эти слова не будут обрабатываться
2) При разрешённом HTML слово будет обрабатываться так же.
3) Здесь недоработка. Слово всё равно будет обрабатываться |
WebMaster |
Отправлено: 20 октября 2013 — 17:40 • Тема: Документация по плагинам • Форум: Обсуждение |
Ответов: 18 Просмотров: 0
|
Цитата:Я ничего не выдумывал - взял из вашего описания в самом верху темы.
Извините. Исправил ссылку |
WebMaster |
Отправлено: 20 октября 2013 — 17:24 • Тема: Плагин "Слова-ссылки" • Форум: Плагины |
Ответов: 24 Просмотров: 0
|
Плагин позволяет заменять слова ссылками.
Требования:
- ExBB 1.0 RC1 или Final
- Система плагинов версии 0.0.1
Установка:
- Скачать архив с плагином
- Установить плагин с помощью установщика: http://форум.ru/plugins.php?acti...n=install_plugin
- Если вы регистрировали событие parse_message, то можете пропустить этот шаг.
Для того, чтобы плагин работал нужно установить систему плагинов и зарегистрировать событие parse_message
Для регистрации события нужно сделать следующее:
- Откройте файл include/fm.class.php
После строки
CODE:$string = preg_replace_callback("#\[search\](.+?)\[\/search\]#is","search_link",$string);
добавьте код:
CODE://--!Регистрация события!--
plugins::setAction('parse_message', array(&$string));
//--!Регистрация события!--
- Установка плагина завершена.
|
WebMaster |
Отправлено: 20 октября 2013 — 17:12 • Тема: Документация по плагинам • Форум: Обсуждение |
Ответов: 18 Просмотров: 0
|
Создание плагина "Слова-ссылки"
Сейчас мы создадим плагин, который будет позволять заменять слова в сообщении ссылками.
1) Создайте такую структуру файлов:
CODE:install.php
info.php
wordlinks/
--plugin.php
--setting.php
Файлы install.php и info.php необходимы исключительно для установщика плагинов.
Файлы plugin.php и setting.php - это файлы самого плагина.
В файле plugin.php находятся обработчики событий, а в файле setting.php форма настроек плагина.
2) Создание информации о плагине.
В файл info.php добавьте такой код:
CODE:
<form method="POST" action="plugins.php?action=install_plugin&step=3">
<table width="99%" cellpadding="4" cellspacing="1" border="0" align="center" class="forumline">
<tr>
<th class="thHead" width="70%">Плагин:</th>
</tr>
<tr class="gen">
<td class="row1"><b>Слова-ссылки</b><br /><span class="gensmall">Плагин позволяет автоматически заменять слова ссылками.</span></td>
</tr>
<tr>
<td class="catBottom" colspan="3" align="center"><input type="submit" name="submit" value="Установить" class="mainoption" /></td>
</tr>
</table>
</form>
В этом файле находится форма, которая выводится при установке плагина.
3) Создание скрипта установки плагина
CODE:
<?php
if (!is_dir('plugins/wordlinks')) {
mkdir('plugins/wordlinks/');
}
define('PLUGIN', 'plugins/wordlinks/');
define('R', dirname(__FILE__).'/wordlinks/');
copy(R.'plugin.php', PLUGIN.'plugin.php');
copy(R.'setting.php', PLUGIN.'setting.php');
$plugins = fdb::read('plugins');
$plugins['wordlinks'] = array(
'active' => 1,
'name' => 'wordlinks',
'title' => 'Слова-ссылки',
'description' => 'Плагин позволяет заменять слова ссылками.'
);
fdb::write('plugins', $plugins);
$words = array(
'TEST' => 'http://test.ru/',
);
fdb::write('wordlinks', $words);
Теперь разберём подробнее этот код.
CODE:if (!is_dir('plugins/wordlinks')) {
mkdir('plugins/wordlinks/');
}
В этих строках проверяется на существование директория с плагином, и если её не существует, то она создаётся с помощью функции mkdir
CODE:define('PLUGIN', 'plugins/wordlinks/');
define('R', dirname(__FILE__).'/wordlinks/');
Здесь определяются константы. PLUGIN - каталог, в котором должен располагаться плагин, R - текущее расположение плагина.
CODE:copy(R.'plugin.php', PLUGIN.'plugin.php');
copy(R.'setting.php', PLUGIN.'setting.php');
Копирование файлов плагина из каталога uploads/plugins/wordlinks/ в каталог plugins/wordlinks/
CODE:$plugins = fdb::read('plugins');
$plugins['wordlinks'] = array(
'active' => 1,
'name' => 'wordlinks',
'title' => 'Слова-ссылки',
'description' => 'Плагин позволяет заменять слова ссылками.'
);
fdb::write('plugins', $plugins);
Здесь происходит регистрация плагина в системе. Сначала считывается содержимое файла plugins.php в массив такой структуры:
CODE:array (
[Название плагина] => array(
active => Включён(1) или выключе(0) плагин,
name => 'Название каталога с плагином',
title => 'Название плагина',
description => 'Описание плагина',
),
);
После этого происходит добавление информации о плагинах в массив всех плагинов.
Затем этот массив записывается обратно в файл.
CODE:$words = array(
'TEST' => 'http://test.ru/',
);
Это - ассоциативный массив слов и ссылок, на которые они заменяются.
CODE:fdb::write('wordlinks', $words);
Запись массива со словами в файл wordlinks.php в каталог data/
3) Создание обработчика событий
В файл wordlinks/plugin.php запишите такой код:
CODE:<?php
function parse_message($data) {
$words = fdb::read('wordlinks');
foreach ($words as $word => $link) {
$data[0] = str_replace($word, "<a href='{$link}'>{$word}</a>", $data[0]);
}
}
plugins::setHandler('parse_message', 'parse_message');
Функция CODE:plugins::setHandler('Обработчик', 'Событие'); регистрирует обработчик для события.
Теперь основные вопросы, которые могут появиться:
- Откуда берётся параметр $data?
- Этот параметр передаётся обработчику во время регистрации события.
- Что содержит параметр $data;
- $data - массив, первый элемент которого содержит указатель на обрабатываемый текст
4) Создание формы настроек:
В файл setting.php запишите такой код:
CODE:
<?php
if (isset($_GET['save'])) {
$array = linesToArray($_POST['wordarray']);
fdb::write('wordlinks', $array);
}
function arrayToLines($words) {
$string = '';
foreach ($words as $word => $link) {
$string .= $word.'='.$link."\n";
}
return $string;
}
function linesToArray($words) {
$array = array();
$lines = explode("\n", $words);
foreach ($lines as $id => $line) {
$line_array = explode('=', $line);
$array[$line_array[0]] = $line_array[1];
}
return $array;
}
$links = fdb::read('wordlinks');
$links = arrayToLines($links);
echo <<<DATA
<h1>Автоматическая подстановка ссылок</h1>
<p class="gensmall">'Здесь вы можете добавить, изменить или удалить слова, которые будут заменяться соответствующими им ссылками (устанавливаемыми вами).<br><br><b>Инструкция:</b> Введите "ключевое слово или фразу" и через знак "=" адрес ссылки, на который перейдет пользователь при клике. Убедитесь что каждый набор ключевого слова (или фразы) и ссылка находится на одной линии.</p>
<form action="plugins.php?action=setting_plugin&plugin={$_GET['plugin']}&save=1" method="post">
<input type="hidden" name="action" value="censor">
<input type="hidden" name="process" value="1">
<table width="100%" cellpadding="4" cellspacing="1" border="0" align="center" class="forumline">
<tr>
<th class="thHead">Настрока плагина "Автоматическая подстановка ссылок"</th>
</tr>
<tr class="gen">
<td align="center" class="row2"><textarea class="post" type="text" cols="105" rows="35" wrap="virtual" name="wordarray">{$links}</textarea></td>
</tr>
<tr>
<td class="catBottom" align="center"><input type="submit" name="submit" value="Сохранить" class="mainoption" /></td>
</tr>
</table>
</form>
<br clear="all" />
DATA;
?>
5) Сборка плагина.
Упакуйте созданные файлы install.php, info.php, wordlinks/plugin.php и wordlinks/setting.php в zip архив.
Всё, сам плагин готов.
Для того, чтобы он работал на чистом ExBB нужно установить систему плагинов и зарегистрировать событие parse_message
Для регистрации события нужно сделать следующее:
- Откройте файл include/fm.class.php
После строки
CODE:$string = preg_replace_callback("#\[search\](.+?)\[\/search\]#is","search_link",$string);
добавьте код:
CODE://--!Регистрация события!--
plugins::setAction('parse_message', array(&$string));
//--!Регистрация события!--
Для установки плагина перейдите по адресу http://вашфорум.ru/plugin.php?ac...n=install_plugin
Для управления плагином перейдите по адресу http://вашфорум.ru/plugins.php. Напротив плагина "Слова-ссылки" есть ссылка на страницу настроек плагина.
К сообщению прикреплён архив с готовым плагином. Для его установки достаточно зарегистрировать событие parse_message |
WebMaster |
Отправлено: 20 октября 2013 — 15:48 • Тема: Документация по плагинам • Форум: Обсуждение |
Ответов: 18 Просмотров: 0
|
Что такое плагин?
Плагин - модуль, который предназначен для расширения функциональности ExBB. С помощью плагинов можно расширять функционал ExBB без редактирования кода движка(нужно только зарегистрировать событие если его нет).
Система плагинов реализована с помощью событий и их обработчиков.
Что такое событие и его обрабочик?
Событие - место в коде движка, где происходит какое-либо важное действие(например обработка сообщения перед его записью в файл). Для того, чтобы событие стало доступно для обработки плагинами, его нужно зарегистрировать. Регистрация события происходит с помощью метода CODE:setAction($action, $params = array()); . класса plugins
Обработчик - функция, которая выполняется во время определённого события. Обработчиков может быть неограниченное количество. Для того, чтобы во время события выполнялся обработчику, его тоже нужно зарегистрировать. Регистрация обработчика происходит с помощью метода CODE:setHandler($function, $action); . класса plugins
Как я могу установить систему плагинов на свой форум?
Процесс установки системы плагинов описан здесь
Где находится панель управления плагинами?
Панель управления плагинами находится по адресу http://вашфорум.ru/plugins.php
Как установить новый плагин?
Автоматический установщик плагинов находится по адресу http://вашфорум.ru/plugins.php?a...n=install_plugin
Я установил плагин, нет никаких ошибок, но он не работает. Что делать?
Во первых проверьте, включен ли плагин. Это можно сделать здесь http://вашфорум.ru/plugins.php
Если плагин включен, но всё равно не работает, то нужно убедиться, что событие, которое он должен обрабатывать присутствует в системе. Как добавить событие для конкретного плагина должно быть написано в инструкции по его установке.
Как плагины влияют на скорость работы движка?
Плагины минимально влияют на скорость работы движка. Я использую такую систему в самодельном движке "Serial CMS"(Если кому интересно, могу скинуть исходники) и при 10-20 установленных плагинах и нескольких SQL запросах скорость генерации совсем маленькая(время 0.02-0.25сек.)
Какой функционал можно добавить с помощью плагинов?
С помощью моей реализации плагинов можно добавлять BB коды, смайлики, управлять выводом HTML кода и многое другое, но такие функции, как смена редактора сообщений реализовать скорее всего не удастся(для этого нужно модернизировать систему плагинов и менять код движка)
Что нужно знать и уметь, чтобы создать плагин?
Требуется знание основ PHP, HTML.
Для того, чтобы создать плагин не обязательно(но желательно) знать тонкости работы движка. |
WebMaster |
Отправлено: 20 октября 2013 — 11:50 • Тема: Реализация плагинов в ExBB • Форум: Обсуждение |
Ответов: 41 Просмотров: 0
|
Цитата:Наконец попробовал предложенную систему. Без описания на конкретном примере как пользоваться не разобрался. Улыбка Буду ждать мануал.
В ближайшее время, как на форуме появится ветка "плагины" выложу мануал
Цитата:Нужно сразу в админку добавить пункт на управление плагинами \
В меню админ-панели?
Цитата:без захода в админку его всё равно не активировать.
Вы же не хотите, чтобы любой пользователь форума мог управлять плагинами? |
WebMaster |
Отправлено: 20 октября 2013 — 09:12 • Тема: Реализация плагинов в ExBB • Форум: Обсуждение |
Ответов: 41 Просмотров: 0
|
Цитата:ну а смысл другой сайт создавать..............вот и решил так. Если есть желание сделаем как сказал электрон
Сделаем |
|
Страниц (26): В начало « ... 18 19 20 21 22 23 24 [25] 26 »
|