Использование bb-кодов на форуме — различия между версиями
Velross (обсуждение | вклад) (Новая страница: «'''Задача:''' расширение возможностей пользователей по форматированию отправляемых в форум…») |
Velross (обсуждение | вклад) |
||
Строка 5: | Строка 5: | ||
В настоящий момент при отправке сообщений в самой системе уже происходит парсинг некоторых bb-кодов, в частности: [b], [i], [quote], [u].<br/> | В настоящий момент при отправке сообщений в самой системе уже происходит парсинг некоторых bb-кодов, в частности: [b], [i], [quote], [u].<br/> | ||
− | Реализован данный парсинг в файле ''/classes/modules/def_module.php'' в методе '''public function''' formatMessage($message, $b_split_long_mode = 0). | + | Реализован данный парсинг в файле ''/classes/modules/def_module.php'' в методе '''public function''' formatMessage($message, $b_split_long_mode = 0). Если мы захотим дополнить этот список, то сделать это правкой системного кода запрещено, так как это будет нарушением лицензии и после обновления все внесенные изменения будут перетерты оригинальными файлами. Как же можно поступить?<br/> |
+ | В наших силах подменить вызываемый макрос из шаблона на свой. Мы можем выяснить, что вызов фильтра formatMessage, применительно к модулю форум, вызывается в макросах topic, topic_last_message, conf_last_message. Нам интересен метод topic, его и будем кастомизировать в третьей части статьи. | ||
+ | |||
+ | '''Часть II. Внедрение bb-code редактора''' | ||
+ | |||
+ | Мы будем внедрять редактор WysiBB, который Вы можете скачать на официальном сайте: [http://www.wysibb.com/]<br/> | ||
+ | Процесс внедрения: | ||
+ | 1) копируем папку wysibb в директорию /templates/название_вашего_шаблона/<br/> | ||
+ | 2) в шаблон дизайна /templates/название_вашего_шаблона/xslt/layouts/default.xsl, в секцию <head> после вставки макросов EditInPlace подключаем нужные плагины и стили: | ||
+ | <source lang="css"> | ||
+ | <!-- Подключение WysiBB --> | ||
+ | <script src="/templates/название_вашего_шаблона/wysibb/jquery.wysibb.min.js" charset="utf-8"></script> | ||
+ | <link rel="stylesheet" href="/templates/название_вашего_шаблона/wysibb/theme/default/wbbtheme.css" type="text/css" /> | ||
+ | </source> | ||
+ | 3) сразу после открывающегося тега <body> инициализируем редактор: | ||
+ | <source lang="html4strict"> | ||
+ | <script> | ||
+ | $(document).ready(function() { | ||
+ | $('#wbbeditor').wysibb(); | ||
+ | }) | ||
+ | </script> | ||
+ | </source> | ||
+ | 4) Открываем шаблон /templates/название_вашего_шаблона/xslt/modules/forum/message_post.xsl<br/> | ||
+ | и для элемента <textarea> прописываем id="wbbeditor": | ||
+ | <source lang="css"> | ||
+ | <div class="form_element"> | ||
+ | <label class="required"> | ||
+ | <span><xsl:text>Комментарии:</xsl:text></span> | ||
+ | <textarea name="body" id="wbbeditor"></textarea> | ||
+ | </label> | ||
+ | </div> | ||
+ | </source> | ||
+ | Всё, редактор должен отображаться в текстовом поле. | ||
+ | |||
+ | '''Часть III. Парсинг bb-кодов и замена их на html-теги''' |
Версия 08:28, 25 апреля 2013
Задача: расширение возможностей пользователей по форматированию отправляемых в форум сообщений за счет применения bb-кодов.
Решение: решение будет состоять из трёх частей: пояснительная, внедрение bb-code редактора, парсинг bb-кодов и замены их на html-теги.
Часть I. Пояснительная
В настоящий момент при отправке сообщений в самой системе уже происходит парсинг некоторых bb-кодов, в частности: [b], [i], [quote], [u].
Реализован данный парсинг в файле /classes/modules/def_module.php в методе public function formatMessage($message, $b_split_long_mode = 0). Если мы захотим дополнить этот список, то сделать это правкой системного кода запрещено, так как это будет нарушением лицензии и после обновления все внесенные изменения будут перетерты оригинальными файлами. Как же можно поступить?
В наших силах подменить вызываемый макрос из шаблона на свой. Мы можем выяснить, что вызов фильтра formatMessage, применительно к модулю форум, вызывается в макросах topic, topic_last_message, conf_last_message. Нам интересен метод topic, его и будем кастомизировать в третьей части статьи.
Часть II. Внедрение bb-code редактора
Мы будем внедрять редактор WysiBB, который Вы можете скачать на официальном сайте: [1]
Процесс внедрения:
1) копируем папку wysibb в директорию /templates/название_вашего_шаблона/
2) в шаблон дизайна /templates/название_вашего_шаблона/xslt/layouts/default.xsl, в секцию <head> после вставки макросов EditInPlace подключаем нужные плагины и стили:
<!-- Подключение WysiBB -->
<script src="/templates/название_вашего_шаблона/wysibb/jquery.wysibb.min.js" charset="utf-8"></script>
<link rel="stylesheet" href="/templates/название_вашего_шаблона/wysibb/theme/default/wbbtheme.css" type="text/css" />
3) сразу после открывающегося тега <body> инициализируем редактор:
<script>
$(document).ready(function() {
$('#wbbeditor').wysibb();
})
</script>
4) Открываем шаблон /templates/название_вашего_шаблона/xslt/modules/forum/message_post.xsl
и для элемента <textarea> прописываем id="wbbeditor":
<div class="form_element">
<label class="required">
<span><xsl:text>Комментарии:</xsl:text></span>
<textarea name="body" id="wbbeditor"></textarea>
</label>
</div>
Всё, редактор должен отображаться в текстовом поле.
Часть III. Парсинг bb-кодов и замена их на html-теги