PunBB: Добавление нового BB кода

Author Роман Чернышов    Category PHP     Tags Комментариев 0 Дата 18 Май

bbcode PunBB: Добавление нового BB кодаВ замечательном форумном движке PunBB предусмотрены следующие BB-коды(BBCode):

[b]Полужирное начертание[/b] выводит Полужирное начертание
[u]Подчёркнутый текст[/u] выводит Подчёркнутый текст
[i]Текст курсивом[/i] выводит Текст курсивом

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

далее я опишу процесс добавления собственного BB-кода «Спойлера» (скрытый текст под ссыкой), при клике на ссылку блок скрывающий текст разворачивается и текст становится доступен для прочтения пользователями. Удобная функция для публикации контента второстепенной степени значимости или скрытого контента от не зарегистрированных пользователей.

Работать будем с движком форума версии 1.4 (но не думаю, что прием в других версиях будет сильно отличаться). И так поехали:

Идем в файл /include/parser.php, ищем функцию function preparse_tags и в строке 120, добавляем в массив $tags новое значение: spoiler.

Получим вот такой код:

$tags = array('quote', 'code', 'b', 'i', 'u', 'color', 'colour', 'url', 'email', 'img', 'list', '*', 'h','spoiler');

Далее ищем функцию, function do_bbcode, и встроке 753 добавляем:

	$pattern[] = '#\[spoiler\](.*?)\[/spoiler\]#ms';

а в строке 760

	$replace[] = '<a href="javascript://" class="openspoiler">Скрытый текст</a><div class="spoiler">$1</div>';

Получим вот такой код:

	$pattern[] = '#\[b\](.*?)\[/b\]#ms';
	$pattern[] = '#\[i\](.*?)\[/i\]#ms';
	$pattern[] = '#\[u\](.*?)\[/u\]#ms';
	$pattern[] = '#\[colou?r=([a-zA-Z]{3,20}|\#[0-9a-fA-F]{6}|\#[0-9a-fA-F]{3})](.*?)\[/colou?r\]#ms';
	$pattern[] = '#\[h\](.*?)\[/h\]#ms';
	$pattern[] = '#\[spoiler\](.*?)\[/spoiler\]#ms';
 
	$replace[] = '<strong>$1</strong>';
	$replace[] = '<em>$1</em>';
	$replace[] = '<span class="bbu">$1</span>';
	$replace[] = '<span style="color: $1">$2</span>';
	$replace[] = '</p><h5>$1</h5><p>';
	$replace[] = '<a href="javascript://" class="openspoiler">Скрытый текст</a><div class="spoiler">$1</div><p>';

На этом этапе добавление нового BBCode закончено, в том числе его обработка парсером форума. Теперь весь текст заключенный в BB-код [spoiler]пример текста[/spoiler] будем помещаться в блок дальше

<div class="spoiler">$1</div>

, а он в свою очередь будет свернут.

Сворачивание блока по умолчанию, мы пропишем в свойствах CSS, в вашем шаблоне, пример /style/Oxygen/Oxygen.css в самый конец файла добавляем

div.spoiler {display:none;border:1px dotted #333;padding:10px;}
.openspoiler {display:block;border:1px dotted #333;padding:10px;background:#fef0ea}

Следующий шаг, добавляем JS скрипт, обработчик клика на ссылку «Скрытый текст», чтобы скрытый блок развернулся и мы увидели скрытый текст.
Для этого в тело шаблона добавляем следующий javaScript код

$(document).ready(function(){
	$('.openspoiler').click(function(){
		$(this).parent().next('.spoiler').toggle();
		$(this).hide();
	});
});

не забываем также подключить библиотеку jQuery, или установить плагин, который так и называется jQuery Plugin. (Для работы нашего JS кода)

После чего форум станет поддерживать новый BB код — Спойлер, при желании можно установить плагин\расширение — панельку BB-кодов(BBCode buttons 1.4.18) и вывести туда кнопку нашего нового кода.
spoiler PunBB: Добавление нового BB кода

Оставить комментарий

О блоге и авторе

Добро пожаловать на блог веб-разработчика! На протяжении многих лет, начиная с 2009 года, я занимаюсь созданием специализированных сайтов, сервисов и крупных веб-порталов. Мною было создано несколько сотен сайтов, большинство из которых работают на ПО созданном под заказ, а также на готовом ПО которое я разрабатываю на протяжении всего периода моей деятельности. Это: CMS "Совместные покупки", CMS "osRealty", CMS "Спорт прогнозы" и многое другое.

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

Поиск по блогу
Категории
Архив
Новое на сайте
Блогеры пишут
  • Роман Чернышов: Для работы капчи на PHP 5.6, замените в файле class.captcha.php строку 264 $ifunc( $this -> i [...]
  • Роман Чернышов: Схема такая: 1) На сайте есть виртуальные кошельки (далее ВК) 2) При пополнении пользователем ВК, [...]
  • Александр: Может скрипт комментариев блокирует сообщения с кодом? Или как длинный текст не проходит?
  • Александр: Пытаюсь в который раз здесь показать код, но страница обновляется, и не сообщения, ни любого оповеще [...]
  • Роман Чернышов: Лично у меня интерес к продаже ссылок пропал уже давно. Преимущество сапы, это то - что ссылки можно [...]
Портфолио Все работы


www.detskiy-mir.net
www.detskydoctor.ru
www.betelit.ru
www.all-alliance.ru
www.videogonok.ru
www.carpfishing.by
www.property-greek.com
www.domcons.ru

с 2009 года по сегодняшний день, создано более 300 сайтов...