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

Страниц (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:31 • Тема: Документация по плагинам • Форум: Обсуждение

Ответов: 18
Просмотров: 0
Цитата:
При попытке зайти по адресу http://вашфорум.ru/plugins.php?action=install вываливаются ошибки

Не ?action=install, а ?action=install_plugin
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
Цитата:
ну а смысл другой сайт создавать..............вот и решил так. Если есть желание сделаем как сказал электрон

Сделаем Хорошо
WebMaster Отправлено: 20 октября 2013 — 08:10 • Тема: Реализация плагинов в ExBB • Форум: Обсуждение

Ответов: 41
Просмотров: 0
Цитата:
да я чую он не захочет

С чего такая уверенность?

Страниц (26): В начало « ... 18 19 20 21 22 23 24 [25] 26 »

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

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

[Script Execution time: 0.0322]     [ ]