Добавление своих кнопок bb-кода

lena1

クリエイター
LV
0
 
Пример тега [sometag]

1. Открыть Ваш дистрибутив форума, и найти там папку <b>development</b>.
В ней есть папка с несжатыми скриптами под названием <b>javascript_uncompressed</b>, там нам понадобятся следующие файлы:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->/jscripts/ips_text_editor_lite.js
/jscripts/ips_text_editor.js<!--c2--></div><!--ec2-->
2. Начнем с <!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo-->формы быстрого ответа<!--sizec--></span><!--/sizec-->, за нее отвечает файл <b>ips_text_editor_lite.js</b>.
Найдем там строки:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->/**
&nbsp;&nbsp;&nbsp;&nbsp;* STD:
&nbsp;&nbsp;&nbsp;&nbsp;* IPB code override
&nbsp;&nbsp;&nbsp;&nbsp;*/
&nbsp;&nbsp;&nbsp;&nbsp;this.ipb_code = function()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var _text = this.get_selection();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.wrap_tags( 'code', false, _text );
&nbsp;&nbsp;&nbsp;&nbsp;};<!--c2--></div><!--ec2-->
Копируем их, и вставим ниже, получится:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->/**
&nbsp;&nbsp;&nbsp;&nbsp;* STD:
&nbsp;&nbsp;&nbsp;&nbsp;* IPB code override
&nbsp;&nbsp;&nbsp;&nbsp;*/
&nbsp;&nbsp;&nbsp;&nbsp;this.ipb_code = function()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var _text = this.get_selection();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.wrap_tags( 'code', false, _text );
&nbsp;&nbsp;&nbsp;&nbsp;};

&nbsp;&nbsp;&nbsp;&nbsp;/**
&nbsp;&nbsp;&nbsp;&nbsp;* STD:
&nbsp;&nbsp;&nbsp;&nbsp;* IPB code override
&nbsp;&nbsp;&nbsp;&nbsp;*/
&nbsp;&nbsp;&nbsp;&nbsp;this.ipb_code = function()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var _text = this.get_selection();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.wrap_tags( 'code', false, _text );
&nbsp;&nbsp;&nbsp;&nbsp;};<!--c2--></div><!--ec2-->
Теперь находим в том, что мы скопировали слова "<b>code</b>" и заменяем их на "<b>sometag</b>".
У нас получилось:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->/**
&nbsp;&nbsp;&nbsp;&nbsp;* STD:
&nbsp;&nbsp;&nbsp;&nbsp;* IPB code override
&nbsp;&nbsp;&nbsp;&nbsp;*/
&nbsp;&nbsp;&nbsp;&nbsp;this.ipb_code = function()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var _text = this.get_selection();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.wrap_tags( 'code', false, _text );
&nbsp;&nbsp;&nbsp;&nbsp;};

&nbsp;&nbsp;&nbsp;&nbsp;/**
&nbsp;&nbsp;&nbsp;&nbsp;* STD:
&nbsp;&nbsp;&nbsp;&nbsp;* IPB sometag override
&nbsp;&nbsp;&nbsp;&nbsp;*/
&nbsp;&nbsp;&nbsp;&nbsp;this.ipb_sometag = function()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var _text = this.get_selection();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.wrap_tags( 'sometag', false, _text );
&nbsp;&nbsp;&nbsp;&nbsp;};<!--c2--></div><!--ec2-->
Загружаем на сервер в папку <b>/jscripts</b>
Далее идем в админку форума - ВНЕШНИЙ ВИД - ваш скин - Изменить HTML шаблоны - skin_topic (просмотр темы) - quick_reply_box_open
В нем ищете:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--><td><div class="rte-normal" id="fast-reply_cmd_ipb_code"><img src="style_images/<#IMG_DIR#>/folder_editor_images/rte-code-button.png"&nbsp;&nbsp;alt="{$this->ipsclass->lang['js_rte_lite_code']}" title="{$this->ipsclass->lang['js_rte_lite_code']}"></div></td><!--c2--></div><!--ec2-->
Копируете этот текст и ниже вставляете его же, только заменяя <b>{$this->ipsclass->lang['js_rte_lite_code']}</b> на ваше название кнопки, в моем случае это "<b>Some Tag</b>".
И заменяете везде слово <b>code</b> на ваш тэг, у меня <b>sometag</b>.
В итоге получится вот такая измененная строка:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--><td><div class="rte-normal" id="fast-reply_cmd_ipb_sometag"><img src="style_images/<#IMG_DIR#>/folder_editor_images/rte-sometag-button.png"&nbsp;&nbsp;alt="Some Tag" title="Some Tag"></div></td><!--c2--></div><!--ec2-->
Не забудьте залить картинку в папку <b>style_images/<#IMG_DIR#>/folder_editor_images/</b>, где <b><#IMG_DIR#></b> это папка со всеми изображениями вашего стиля, с названием, которое вы указали, у меня это <b>rte-sometag-button.png</b>.
Сохраняете шаблон и все. Кнопка в быстром ответе готова.

3. <!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo-->Теперь кнопка в форме расширенного ответа.<!--sizec--></span><!--/sizec-->
И так, открываем ваш несжатый файл <b>ips_text_editor.js</b>.
И ищем в нем строки:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->&nbsp;&nbsp;&nbsp;&nbsp;/**
&nbsp;&nbsp;&nbsp;&nbsp;* STD:
&nbsp;&nbsp;&nbsp;&nbsp;* IPB Quote override
&nbsp;&nbsp;&nbsp;&nbsp;*/
&nbsp;&nbsp;&nbsp;&nbsp;this.ipb_quote = function()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.wrap_tags_lite(&nbsp;&nbsp;'
', 0)
&nbsp;&nbsp;&nbsp;&nbsp;};<!--c2--></div><!--ec2-->
Опять проделываем операцию копирования и получаем вот это (вместе с тем, что копировали):
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->/**
&nbsp;&nbsp;&nbsp;&nbsp;* STD:
&nbsp;&nbsp;&nbsp;&nbsp;* IPB Quote override
&nbsp;&nbsp;&nbsp;&nbsp;*/
&nbsp;&nbsp;&nbsp;&nbsp;this.ipb_quote = function()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.wrap_tags_lite(&nbsp;&nbsp;'
', 0)
&nbsp;&nbsp;&nbsp;&nbsp;};

&nbsp;&nbsp;&nbsp;&nbsp;/**
&nbsp;&nbsp;&nbsp;&nbsp;* STD:
&nbsp;&nbsp;&nbsp;&nbsp;* IPB Quote override
&nbsp;&nbsp;&nbsp;&nbsp;*/
&nbsp;&nbsp;&nbsp;&nbsp;this.ipb_quote = function()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.wrap_tags_lite(&nbsp;&nbsp;'
', 0)
&nbsp;&nbsp;&nbsp;&nbsp;};<!--c2--></div><!--ec2-->
Заменяем везде в копии слово "<b>quote</b>" на свой тэг, у меня это "<b>sometag</b>".
И получаем (вместе с исходной функцией):
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->/**
&nbsp;&nbsp;&nbsp;&nbsp;* STD:
&nbsp;&nbsp;&nbsp;&nbsp;* IPB Quote override
&nbsp;&nbsp;&nbsp;&nbsp;*/
&nbsp;&nbsp;&nbsp;&nbsp;this.ipb_quote = function()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.wrap_tags_lite(&nbsp;&nbsp;'
', 0)
&nbsp;&nbsp;&nbsp;&nbsp;};

&nbsp;&nbsp;&nbsp;&nbsp;/**
&nbsp;&nbsp;&nbsp;&nbsp;* STD:
&nbsp;&nbsp;&nbsp;&nbsp;* IPB sometag override
&nbsp;&nbsp;&nbsp;&nbsp;*/
&nbsp;&nbsp;&nbsp;&nbsp;this.ipb_sometag = function()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.wrap_tags_lite(&nbsp;&nbsp;'[sometag]', '[/sometag]', 0)
&nbsp;&nbsp;&nbsp;&nbsp;};<!--c2--></div><!--ec2-->
Сохраняем.
Далее опять идём в админку - ВНЕШНИЙ ВИД - ваш скин - Изменить HTML шаблоны - skin_editors (редактор сообщений) - ips_editor
Находим:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--><td><div class="rte-normal" id="{$editor_id}_cmd_ipb_code"><img src="{$images_path}rte-code-button.png"&nbsp;&nbsp;alt="{$this->ipsclass->lang['js_rte_lite_code']}" title="{$this->ipsclass->lang['js_rte_lite_code']}"></div></td><!--c2--></div><!--ec2-->
Копируете этот текст и ниже вставляете его же, только заменяя <b>{$this->ipsclass->lang['js_rte_lite_code']}</b> на ваше название кнопки, в моем случае это "<b>Some Tag</b>".
И заменяете везде слово <b>code</b> на ваш тэг, у меня <b>sometag</b>.
В итоге получится вот такая строка:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--><td><div class="rte-normal" id="{$editor_id}_cmd_ipb_sometag"><img src="{$images_path}rte-sometag-button.png"&nbsp;&nbsp;alt="Some tag" title="Some tag"></div></td><!--c2--></div><!--ec2-->

<div align="right"><i><!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo-->ibrportal.net<!--sizec--></span><!--/sizec--></i></div>
 
Да уж... На жаль средствами шамблонов такого не сделаешь :(
 
а можно ли сделать какие-нибудь функциональные bb коды? типа выравнивания текста по ширине таблицы (justify)?
 
А есть какие-то уроки по этому? или просто брать допустим как код - center? и что-то изменя сделать justify?) прошу прощения, если такая тема уже есть.
 
Сверху