Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Назад в раздел
то ждем ваше обращение в нашей службе тех поддержки.
Компонент интеграции визуального редактора
Создадим компонент, интегрирующий популярный редактор TinyMCE в Bitrix Framework.
Загрузите свежую версию редактора с сайта производителя.
В своем пространстве имен в папке /local
создайте структуру папок и файлов:
-
/bitrix/components/tools/
;-
/bitrix/components/tools/editor.tiny.mce/
;-
/bitrix/components/tools/editor.tiny.mce/templates/
;-
/bitrix/components/tools/editor.tiny.mce/templates/.default/
;
-
-
/bitrix/components/tools/editor.tiny.mce/tiny_mce/
- папка для дистрибутива редактора; - component.php — логика компонента;
- .parameters.php — файл для описания входящих параметров.
-
-
Скопируйте скаченный дистрибутив в папку /tiny_mce
.
В файл component.php добавляем код:
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); $APPLICATION->AddHeadScript($this->__path .'/tiny_mce/tiny_mce.js'); $sNameTextArea = (isset($arParams['TEXTAREA_NAME']) == false) ? 'content' : $arParams['TEXTAREA_NAME']; $sIdTextArea = (isset($arParams['TEXTAREA_ID']) == false) ? '' : $arParams['TEXTAREA_ID']; if ('' == trim($sIdTextArea)) $sIdTextArea = 'content'; $sEditorID = (isset($arParams['INIT_ID']) == false) ? 'textareas' : $arParams['INIT_ID']; $iTextareaWidth = (isset($arParams['TEXTAREA_WIDTH']) == false) ? '100%' : $arParams['TEXTAREA_WIDTH']; $iTextareaHeight = (isset($arParams['TEXTAREA_HEIGHT']) == false) ? '300' : $arParams['TEXTAREA_HEIGHT']; $sText = (isset($arParams['TEXT']) == false) ? '' : $arParams['TEXT']; ?> <script type="text/javascript"> <? if ($arParams['TYPE_EDITOR'] == 'TYPE_1') { ?> tinyMCE.init( { language : 'ru', mode : "textareas", //elements : "<?=$sEditorID?>", editor_selector : "<?=$sEditorID?>", theme : "advanced", plugins : "safari, spellchecker, upload.images.komka, wordcount, fullscreen", theme_advanced_buttons1 : "formatselect,fontselect,fontsizeselect,bold,italic,underline,link,justifyleft,justifycenter, justifyright,pasteword,pastetext,images,|,bullist,numlist,|,undo,redo,|,spellchecker,fullscreen", theme_advanced_buttons2 : "", theme_advanced_buttons3 : "", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", theme_advanced_statusbar_location : "bottom", theme_advanced_resizing : false, content_css : "<?=$this->__path?>/example.css", height : "<?=$iTextareaHeight?>", spellchecker_languages : '+Русский=ru,English=en', spellchecker_word_separator_chars : '\\s!\"#$%&()*+,-./:;<=>?@[\]^_{|}' } ); <? } elseif($arParams['TYPE_EDITOR'] == 'TYPE_2') { ?> tinyMCE.init({ language : 'ru', mode : "textareas", editor_selector : "<?=$sEditorID?>", theme : "advanced", plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions, iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality, fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,imagemanager,filemanager", theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft, justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect", theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist, numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|, insertdate,inserttime,preview,|,forecolor,backcolor", theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap, emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen", theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops, spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote, pagebreak,|,insertfile,insertimage", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", theme_advanced_statusbar_location : "bottom", theme_advanced_resizing : true, content_css : "<?=$this->__path?>/example.css", height : "<?=$iTextareaHeight?>", template_external_list_url : "js/template_list.js", external_link_list_url : "js/link_list.js", external_image_list_url : "js/image_list.js", media_external_list_url : "js/media_list.js", template_replace_values : {username : "Some User", staffid : "991234"} } ); <? } ?> </script> <textarea id="<?=$sIdTextArea?>" class="<?=$sEditorID?>" name="<?=$sNameTextArea?>" style="width:<?=$iTextareaWidth?>"><?=$sText?></textarea> <? $this->IncludeComponentTemplate();?>
Файл .parameters.php
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); $arComponentParameters = array( "PARAMETERS" => array( "TYPE_EDITOR" => Array( "PARENT" => "SETTINGS", "NAME" => "Режим редактора", "TYPE" => "LIST", "VALUES" => array('TYPE_1' => 'Упрощенные редактор', 'TYPE_2' => 'Полной редактор'), ), 'INIT_ID' => array( "PARENT" => "SETTINGS", "NAME" => "ID редатора (уникальный)", "TYPE" => "STRING", "DEFAULT" => '', ), 'TEXT' => array( "PARENT" => "SETTINGS", "NAME" => "Контент который нужно вставить в редактор", "TYPE" => "STRING", "DEFAULT" => $_POST['content'], ), 'TEXTAREA_NAME' => array( "PARENT" => "SETTINGS", "NAME" => "Имя поля TEXTAREA", "TYPE" => "STRING", "DEFAULT" => 'content', ), 'TEXTAREA_ID' => array( "PARENT" => "SETTINGS", "NAME" => "ID поля TEXTAREA", "TYPE" => "STRING", "DEFAULT" => 'content', ), 'TEXTAREA_WIDTH' => array( "PARENT" => "SETTINGS", "NAME" => "Ширина редактора", "TYPE" => "STRING", "DEFAULT" => '100%', ), 'TEXTAREA_HEIGHT' => array( "PARENT" => "SETTINGS", "NAME" => "Высота редактора", "TYPE" => "STRING", "DEFAULT" => '300', ), ) ); ?>
Важные моменты в коде файла component.php, которые надо пояснить. Подключение собственно редактора:
<? $APPLICATION->AddHeadScript($this->__path .’/tiny_mce/tiny_mce.js’); ?>
Подключение стилей, которые вынесены в папку с компонентом чтобы было удобнее, это настройка уже в js, в коде инициализации:
content_css : ‘<?=$this->__path?>/example.css’,
Внимание! если на странице 2 или более редакторов, то мы идентифицируем их по имени класса editor_selector :
‘<?=$sEditorID?>’
.Собственно сама область текста для которой это все и делается:
<textarea id=’<?=$sIdTextArea?>’ name=’<?=$sNameTextArea?>’ style=’width:<?=$iTextareaWidth?>’><?=$sText?></textarea>
Как использовать
Подключается вот в таком виде:
<? echo $_POST['content'] ?> <? echo $_POST['content2'] ?> <form action="" method="post" name=""> <? $APPLICATION->IncludeComponent("tools:editor.tiny.mce", ".default", array( "TEXT" => $_POST["content"], // контент из запроса который нужно вставить "TEXTAREA_NAME" => "content", // имя поля "TEXTAREA_ID" => "content", // id поля "TEXTAREA_WIDTH" => "100%", // ширина "TEXTAREA_HEIGHT" => "300", // высота "INIT_ID" => "ID" // ID самого редактора ), false ); ?> <input value="submit" name="sub" type="submit" /> </form>
Назад в раздел
Подписаться на новые материалы раздела: