![]() |
Статьи | Новости | Контакты | |||||
|
||||||||
|
||||||||
Программы (4), Базы данных (5), Flash (1), Разметка гипертекста (5), Динамические сайты (7), Платформы быстрых разработок (4), Скрипты (13), Графика (0), Системы управления контентом (80), Языки программирования (30), RSS-агрегаторы (1)
28.08.2008 |
![]() |
Занимаясь администрированием форума на основе phpBB*, по мере развития собственного проекта разработчик все чаще и чаще может сталкиваться с необходимостью модификации и улучшения функциональности форума. Внешний вид, администрирование, модерирование, форматирование пользовательских сообщений — все эти сферы жизни сайта могут быть затронуты. Рано или поздно модов, имеющихся для скачивания на общедоступных источниках, может не хватить для удовлетворения ваших нужд. И у вас появляется интересная и волнующая возможность создать свою собственную модифицикацию для форума. И даже поделиться ею с остальными!
Существенно оживить внешний вид сообщений пользователей может расширение возможностей BB-кода* на вашем форуме. По умолчанию обрабатываются следующие BB-теги: [b] — для жирного шрифта, [i] — для курсива, [u] — для подчеркнутого текста, [quote] — для цитат, [list] — для создания списков, [img] — для вставки иллюстраций, [color] — для цветового форматирования, [size] — для изменения размера шрифта. Вы можете установить существующие плагины для добавления новых тегов, а можете придумать и добавить тег сами.
![]() |
Форма для создания нового сообщения в форуме на основе phpBB |
Для того чтобы продемонстрировать, как это делается, добавим к стандартному набору тег [line-through], то есть зачеркнутный текст.
1. Модифицируем файл PHP*, обеспечивающий правильную интерпретацию тегов BB-кода и перевод их в обычные теги HTML*. Откроем файл includes/bbcode.php и добавим в функцию bbencode_first_pass обработчик нового тега:
// [line-through] and [/line-through] for line-through decorated text.
$text = preg_replace("#\[line-through\](.*?)\[/line-through\]#si", "[line-through:$uid]\\1[/line-through:$uid]", $text);
2. Там же в функцию bbencode_second_pass добавим второй обработчик по шаблону:
// [line-through] and [/line-through] for line-through decorated text.
$text = str_replace("[line-through:$uid]", $bbcode_tpl['line-through_open'], $text);
$text = str_replace("[/line-through:$uid]", $bbcode_tpl['line-through_close'], $text);
3. Закроем файл bbcode.php, предварительно сохранив изменения. Откроем для редактирования файл шаблона bbcode.tpl, находящийся в папке с используемой вами темой оформления. В список шаблонов обрабатываемых тегов добавим новый:
<!-- BEGIN line-through_open --><span style="text-decoration: line-through"><!-- END line-through_open -->
<!-- BEGIN line-through_close --></span><!-- END line-through_close -->
4. Закроем файл bbcode.tpl, сохранив изменения, и из той же директории откроем файл шаблона posting_body.tpl. Здесь нам необходимо внести новый тег в массив bbtags:
bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]',
'[img]','[/img]','[url]','[/url]','[line-through]','[/line-through]','');
5. В том же файле находим таблицу, содержащую вывод кнопок для вставки BB-кода в новое сообщение. В нужном месте там вставляем следующую ячейку:
<td><span class="genmed"><input type="button" class="button" accesskey="n" name="addbbcode18" value=" lt " style="text-decoration: line-through; width: 30px" onClick="bbstyle(18)" onMouseOver="helpline('n')" /></span></td>
Будьте бдительны: здесь 18 — это порядковый номер при счете, начиная с 0, тега [line-through] в массиве bbtags, который мы изменяли выше. n — буква для быстрого доступа к тегу. Функция helpline('n'), вызываемая при событии наведения мыши на кнопку, — подсказка. Для того чтобы подсказки работали, вам необходимо сделать следующее:
-
Добавить строку n_help = "{L_BBCODE_N_HELP}"; в блок helpline messages.
-
Закрыть, сохранив изменения, файл posting_body.tpl. Открыть для редактирования языковый файл language/lang_english/lang_main.php и добавить в него строку $lang['bbcode_n_help'] = 'Text-decoration: [line-through]text[/line-through]'; в блоке Posting/Replying (здесь описываются все подсказки к кнопкам ВВ-кода). То же можно повторить и для файла, содержащего русский язык, если форум у вас работает на двух языках: открываем language/lang_russian/lang_main.php, находим блок Posting/Replying и добавляем в него строку $lang['bbcode_n_help'] = 'Перечеркнутый текст: [line-through]текст[/line-through] (alt+n)';. Сохраняем и закрываем документ.
![]() |
Пример использования нового тега для форматирования текста перечеркиванием |
Таким образом, мы получили полноценный мод, который может использоваться на любом форуме на основе phpBB. Для того чтобы каждый веб-мастер мог установить его, нужно оформить инструкцию по установке согласно общепринятым требованиям.
##############################################################
Теперь, следуя нашим указаниям, оформленным подобным образом, любой веб-мастер сможет расширить функциональность своего форума добавлением этого тега.
## MOD Title: Additional BB-tag for line-through decoration
## (Название мода: Дополнительный ВВ-тег для оформления текста перечеркиванием)
## MOD Author: Angie <angieable@gmail.com> (Angie Walker) http://maxybaby.net.ua
## (Информация об авторе: имя <адрес электронной почты> (настоящее имя или ник) адрес вашего сайта)
## MOD Description: Adds [line-through][/line-through] BBCode tags for text decoration.
## Makes text marked with <span style="text-decoration: line-through"></span>
## (Краткая информация о новом моде)
## MOD Version: x.x.x
## (Версия мода)
##
## Installation Level: Easy
## (Сложность установки, может быть Easy, Intermediate или Advanced)
## Installation Time: 10 Minutes
## (Сколько времени занимает установка)
## Files To Edit: includes/bbcode.php, templates/subSilver/bbcode.tpl,
## templates/subSilver/posting_body.tpl, language/lang_english/lang_main.php,
## language/lang_russian/lang_main.php
## (Файлы, нуждающиеся в изменении)
## Included Files: none
## (Список прилагаемых файлов)
##############################################################
## Author Notes:
## (Примечания автора)
##
##############################################################
## MOD History:
##
## YYYY-MM-DD — Version x.x.x
## — version notes go here
## (История вносимых изменений)
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
## (Стандартное напоминание о необходимости бэкапа)
##############################################################
#
#-----[ OPEN ]------------------------------------------
#
includes/bbcode.php
#
#-----[ FIND ]------------------------------------------
#
// [i] and [/i] for italicizing text.
$text = str_replace("[i:$uid]", $bbcode_tpl['i_open'], $text);
$text = str_replace("[/i:$uid]", $bbcode_tpl['i_close'], $text);
#
#-----[ AFTER, ADD ]------------------------------------
#
// [line-through] and [/line-through] for line-through decorated text.
$text = str_replace("[line-through:$uid]", $bbcode_tpl['line-through_open'], $text);
$text = str_replace("[/line-through:$uid]", $bbcode_tpl['line-through_close'], $text);
#
#-----[ FIND ]------------------------------------------
#
// [i] and [/i] for italicizing text.
$text = preg_replace("#\[i\](.*?)\[/i\]#si", "[i:$uid]\\1[/i:$uid]", $text);
#
#-----[ AFTER, ADD ]------------------------------------
#
// [line-through] and [/line-through] for line-through text.
$text = preg_replace("#\[line-through\](.*?)\[/line-through\]#si", "[line-through:$uid]\\1[/line-through:$uid]", $text);
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/bbcode.tpl
#
#-----[ FIND ]------------------------------------------
#
<!-- BEGIN i_open --><span style="font-style: italic"><!-- END i_open -->
<!-- BEGIN i_close --></span><!-- END i_close -->
#
#-----[ AFTER, ADD ]------------------------------------
#
<!-- BEGIN line-through_open --><span style="text-decoration: line-through"><!-- END line-through_open -->
<!-- BEGIN line-through_close --></span><!-- END line-through_close -->
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/posting_body.tpl
#
#-----[ FIND ]------------------------------------------
#
bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]',
'[img]','[/img]','[url]','[/url]','');
#
#-----[ INLINE, FIND ]----------------------------------
#
'[url]','[/url]',
#
#-----[ IN-LINE AFTER, ADD ]----------------------------
#
'[line-through]','[/line-through]',
#
#-----[ FIND ]------------------------------------------
#
<td><span class="genmed"><input type="button" class="button" accesskey="u" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px" onClick="bbstyle(4)" onMouseOver="helpline('u')" /></span></td>
#
#-----[ AFTER, ADD ]------------------------------------
#
<td><span class="genmed"><input type="button" class="button" accesskey="n" name="addbbcode18" value=" lt " style="text-decoration: line-through; width: 30px" onClick="bbstyle(18)" onMouseOver="helpline('n')" /></span></td>
#
#-----[ FIND ]------------------------------------------
#
f_help = "{L_BBCODE_F_HELP}";
#
#-----[ AFTER, ADD ]------------------------------------
#
n_help = "{L_BBCODE_N_HELP}";
#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
$lang['bbcode_f_help'] = 'Font size: [size=x-small]small text[/size]';
#
#-----[ AFTER, ADD ]------------------------------------
#
$lang['bbcode_n_help'] = 'Line-through decorated text: [line-through]text[/line-through] (alt+n)';
#
#-----[ OPEN ]------------------------------------------
#
language/lang_russian/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
$lang['bbcode_f_help'] = 'Font size: [size=x-small]small text[/size]';
#
#-----[ AFTER, ADD ]------------------------------------
#
$lang['bbcode_n_help'] = 'Перечеркнутый текст: [line-through]текст[/line-through] (alt+n)';
#
#-----[ SAVE/CLOSE ALL FILES ]--------------------------
#
#EoM
Ссылки по теме
Скоро на сайте
-
Wordpress
Серия статей о плагинах к движку WordPrress -
AJAX
Проекты и продукты, ориентированные на AJAX -
Новые сервисы Google
Обзор новых сервисов Google
Copyright © 2003—2022 Все права защищены
При использовании материалов сайта ссылка на hostinfo.ru обязательна