BBCode - это просто.

amelanin

Moderator
LV
0
 
Для начала разберемся, для чего нам нужны BB Коды на форуме?

Теоретически - вы можете разрешить юзерам вставлять HTML коды, но... Тогда за безопастность форума никто поручиться не сможет. Допустим злоумышленник легко вставит вместо обычного плеера видео или музыки шелл и получит доступ к чему угодно на вашем хостинге... Как это делается объяснять не буду, но довольно просто... Выход тут простой:
Для того, чтобы юзеры могли вставлять сторонний контент без вреда для форума, существуют BB Коды, работа с ними довольно проста для пользователей, и в то-же время вставить через BB коды сторонний непредусмотренный на форуме код довольно сложно. Чаще всего он просто откажется обрабатываться.

Для всех версий IPB - BB Code делаются довольно просто.

допустим нам надо пропарсить ВВ кодом коды сайта promodj.ru
ну например такой:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--><object width="379" height="83"><param name="movie" value="http://i.cdn.promodeejay.net/swf/blogplayer.swf" /><param name="wmode" value="transparent" /><param name="allowFullScreen" value="true" /><param name="FlashVars" value="fileID=975365" /><embed src="http://i.cdn.promodeejay.net/swf/blogplayer.swf" type="application/x-shockwave-flash" wmode="transparent" width="379" height="83" allowFullScreen="true" flashvars="fileID=975365"></embed></object><!--c2--></div><!--ec2-->
Мы видим в коде постоянную часть всех музыкальных роликов, и номер конкретного ролика - 975365.

Что нам это дает? Правильно, мы можем подставить постоянную часть кода в BB-Code, а пользователям останется только ввести номер ролика и он автоматом подставится в код.

Так например в тройке, Идем в раздел Внешний вид, выбираем в меню BB-коды и жмем кнопочку добавить.

Выпадает форма добавления BB кода.

Вводим в поля произвольное название BB кода, пример использования и краткое описание.
поле тег заполняем латинскими буквами и цифрами без пробелов и знаков препинания - это поле и будет BB кодом.
в нашем случае это BB код ну допустим
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->pj<!--c2--></div><!--ec2-->
Для пользователя он будет выглядеть как
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->[pj]тут запрашиваемый номер ролика[/pj]<!--c2--></div><!--ec2-->

а на форуме он будет отрабатываться как:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--><object width="379" height="83"><param name="movie" value="http://i.cdn.promodeejay.net/swf/blogplayer.swf" /><param name="wmode" value="transparent" /><param name="allowFullScreen" value="true" /><param name="FlashVars" value="fileID=тут запрашиваемый номер ролика" /><embed src="http://i.cdn.promodeejay.net/swf/blogplayer.swf" type="application/x-shockwave-flash" wmode="transparent" width="379" height="83" allowFullScreen="true" flashvars="fileID=тут запрашиваемый номер ролика"></embed></object><!--c2--></div><!--ec2-->

При попытке вставить в запрос не номер ролика, а что-то другое - скорее всего либо код не отработает, либо покажет фрейм страницы 404 сайта промодиджей...

Но вернемся к нашим баранам, т.е. к заполнению BB кода дальше...

поле: Одиночный тег? - ставим Нет
поле: Использовать опции в теге? - если нам не требуется опций ставим Нет
поле: Option необязательно? - ставим так-же Нет
поле: Поменять option и content местами? - ставим Нет
поле: Предотвращать разбор вложенных кодов ? - ставим <b>Да</b>
поле: Вырезать из результатов поиска - по желанию, у меня стоит Нет

Далее самая важная часть:
поле: Шаблон замены BB-кода
в него вписываем полный код с PromoDj или того сайта с которого вы хотите парсить содержимое.
и меняем в коде переменную с номера ролика на вставку запроса переменной
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->{content}<!--c2--></div><!--ec2-->

в нашем случае это получилось вот так:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--><object width="379" height="83"><param name="movie" value="http://i.cdn.promodeejay.net/swf/blogplayer.swf" /><param name="wmode" value="transparent" /><param name="allowFullScreen" value="true" /><param name="FlashVars" value="fileID={content}" /><embed src="http://i.cdn.promodeejay.net/swf/blogplayer.swf" type="application/x-shockwave-flash" wmode="transparent" width="379" height="83" allowFullScreen="true" flashvars="fileID={content}"></embed></object><!--c2--></div><!--ec2-->

поле: ИЛИ PHP файл для исполнения - оставляем пустым если мы не подключали сторонний парсер кода написаный отдельно от движка форума.

Каким группам разрешено использовать этот код ? - ставим желаемые группы которые могут воспользоваться данным кодом.

Где BB-код может использоваться ? - отмечаем форумы в которых может использоваться данный BB код.

Приложение BB-кодов - выбираем = Пользователи

Изображение BB-кода - пишем имя картинки для данного BB кода, если таковая имеется и залита в папку (директорию_стиля)/rte_icons/

поле: Подсказка для 'option' - оставляем пустым так как опции мы не использовали в данном теге

в поле: Подсказка для 'content' - вводим краткую подсказку к коду... в нашем случае там стоит текст: Вводите только номер композиции из кода для подстановки в шаблон.

Сохраняем BB код...
далее проверяем готовый код в разделе под списком всех BB кодов есть поле... вводим в него
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->[pj]975365[/pj]<!--c2--></div><!--ec2--> - код должен корректно отработать поставив вверху страницы плеер.

если все в порядке - топаем на форум радовать пользователей новым BB кодом... если нет еще раз проверяем свои шаги нажав изменить код.

По аналогии с вышесказанным, можно делать любые BB коды, для любых сайтов.

Так-же должен отметить, что в IPB 3тьей версии делать BB Коды для сверхпопулярных сайтов типа YouTube уже не надо, они парсятся автоматом вставкой медиа BB кода...
 
Сверху