По большому счёту, тема обсосана со всех, с каких только можно, сторон, однако до сих пор возникают вопросы. Некоторые из них хочу рассмотреть более подробно и с примерами.
Вся операция "Внедрение своих BB-кодов на сайт” сводится к простой последовательности простых действий. Давайте, рассмотрим их пошагово:
1. Добавление самой кнопки новых BB-кодов.
2. Установка скрипта обработчика при добавлении BB-кодов.
3. Установка скрипта обработчика BB-кодов в материалах/постах.
Добавление самой кнопки новых BB-кодов
Итак, кнопка представляет собой, в простейшем варианте, простой инпут (<input />), или картинку с прописанным к ней событием onclick(); Вставляется она в шаблон - «Форма добавления сообщения», обычно, после оператора, выводящего BB-коды - $BBCODES$(имеются в виду сайты в системе uCoz).
Установка скрипта обработчика BB-кодов в материалах/постах
Сам скрипт обработчик - считывает контент блока с текстом (комментарием, постом) и ищет в нём определённые, заранее заданные в скрипте BB-коды, а найдя их - заменяет на их HTML-эквивалент, котрый тоже задаётся в самом скрипте.
Ниже - будут конкретные примеры, а пока - вот стандартный скрипт обработчика:
('bbcode') - его стартовое HTML представление(если не понятно - ниже будет пример).
('[/bbcode]') - закрывающий BB-код.
('/bbcode') - закрывающая часть HTML представления этого BB-кода.
Скрипт обработчик вставляется в шаблон страницы после контента, подверженного обработке.
То есть, если контент на форуме (имеются в виду сайты в системе uCoz) выводится оператором $BODY$, то скрипт добавляется в шаблон «Общий вид страниц форума», после $BODY$.
И тоже, через условие, проверяющее является ли страница страницей с постами, то есть равняется ли оператор $PAGE_ID$ данной страницы значению «threadpage».
<fieldset style="margin:7px 5px 7px 30px;padding:3px 10px 7px 25px;border:1px dashed #F36;border-left:2px solid #F00;background:#fafafa url(http://likbezz.ru/_theme/_st/img/ico/alert_ico.gif) no-repeat 4px 7px;"><legend style="color:#C00">Информация:</legend> Здесь будет текст, что находится между [info] и [/info] </fieldset>
В принципе, можно, задать блоку класс, и прописать его в CSS.
Но, суть не в этом.
Разделим этот блок (код блока), на начало блока, его содержание, и конец.
Получается вот так:
Code (HTML)
<fieldset style="margin:7px 5px 7px 30px;padding:3px 10px 7px 25px;border:1px dashed #F36;border-left:2px solid #F00;background:#fafafa url(http://likbezz.ru/_theme/_st/img/ico/alert_ico.gif) no-repeat 4px 7px;"><legend style="color:#C00">Информация:</legend> Здесь будет текст, что находится между [info] и [/info] </fieldset>
Где:
<fieldset style="..."><legend style="...">Информация:</legend> - это начало блока.
Здесь будет текст - это содержание, что вы будете добавлять через форму.
</fieldset> - это - конец блока - закрывающий его див.
Отредактируем наш скрипт-обработчик - заменим BB-коды на свои, и их HTML-представление.
Внимательно посмотрите, и постарайтесь понять куда что подставляется. Так как, если поймёте - сделать любые свои BB-коды вам будет легко и просто.
В итоге, блок с инфой должен выглядеть примерно вот так:
И вот так, при добавлении:
Само собой, стилевое оформление блока вы можете менять как хотите, добавлять картинки, фоновые изображения, рамки, границы прочее, и блоков можете сделать не один, а несколько, в разумных пределах, конечно.
У меня проблема!!! Сделал всё как здесь(вставил кнопку и скрипт) но почему то кнопка появилась но сам скрипт не работает(открывающий ВВ код есть "[info]" а закрывающего "[/info]" нету ). Помогите разобраться в чем дело
Я разобрался!!! Всё работает!!! Просто при нажатии на кнопку [info] код открывается,но при повторном нажатии на неё(как в большинстве случаев) он не закрывается(приходиться вручную дописывать закрывающий код [/info],хотя это не удобно). В остальном всё работает отлично.
Предлагаю посмотреть, как сея проблема решена на моём форуме (ВЕТЕР НАДЕЖДЫ), с помощью программного комплекса (BBComplex)
Это не совсем «проблема» ) Это для тех, кому не интересен готовый продукт, а интересно создавать что-то своё, уникальное, не ограниченное рамками “готового”. )