TinyMCE + 1с-Битрикс

tinymce

TinyMCE - Javascript WYSIWYG Editor

Пост скорее для новичков битрикса. В нем я хочу показать как просто и легко можно создать компонент. Мы сделаем компонент по выводу виз редактора (WYSIWYG). К сожалению в стандартной поставке упрощенный редактор, мягко говоря не всегда удобен. Я придерживаюсь мнения что нужно чуть больше уделять внимания интерфейсам которые используют именно пользователи сайта, битрикс хоть и что-то сделал для этого, но как всегда не фундаментально. Я это называю как пускание пыль в глаза. Но да ладно, это все понятно, да и написать хороший редактор не очень то и просто. Мы будет интегрировать популярный редактор

TinyMCE + 1с-Битрикс.


Для этого нам понадобится дистрибутив самого редактора, берем самую свежую версию с сайта производителя http://tinymce.moxiecode.com/.

Создаем каркас нашего компонента. Для лучшего понимания я вынесу этот компонент в свое пространство имен, думаю так будет удобнее. Итак создаем вот такую структуру папок:

/bitrix/components/tools/

/bitrix/components/tools/editor.tiny.mce/

/bitrix/components/tools/editor.tiny.mce/templates/

/bitrix/components/tools/editor.tiny.mce/templates/.default/

И создаем папку куда выложим сам дистрибутив редактора tiny_mce т. е.

/bitrix/components/tools/editor.tiny.mce/tiny_mce/

В папке /bitrix/components/tools/editor.tiny.mce/ создаем 2 файла.

componet.php — кто еще не знает это логика нашего компонента

.parameters.php — файл для описания входящих параметров

Итак приступим. Копируем скаченный дистрибутив в папку tiny_mce. Открываем файл componet.php и начинаем подключать .  Опишу важные моменты,  исходник я выложу ниже :

Подключаем сам редактор:

<?  $APPLICATION->AddHeadScript($this->__path .’/tiny_mce/tiny_mce.js’); ?>

Подключаем стили, я их вынес в папку с компонентом чтобы было удобнее, это настройка уже в js, в коде инициализации:

content_css : ‘<?=$this->__path?>/example.css’,

Очень важный момент,  если на странице 2 или более редакторов то мы идентифицируем их по имени классы editor_selector : ‘<?=$sEditorID?>’. Странное решение со стороны разработчиков но все же это так.

Ну и собственно сама текстария для которой это все и делается

<textarea id='<?=$sIdTextAria?>’  name='<?=$sNameTextAria?>’ style=’width:<?=$iTextariaWidth?>’><?=$sText?></textarea>

Итак как использовать. Просто подключается вот в таком виде:


<? echo $_POST['content'] ?>
<? echo $_POST['content2'] ?>
<form action="" method="post" name="">
<? $APPLICATION->IncludeComponent("tools:editor.tiny.mce", ".default", array(
"TEXT" => $_POST["content"], // контент из запроса который нужно вставить
"TEXTARIA_NAME" => "content", // имя поля
"TEXTARIA_ID" => "content",         // id поля
"TEXTARIA_WIDTH" => "100%",  // ширина
"TEXTARIA_HEIGHT" => "300",    // высота

"INIT_ID" => "ID" // ID самого редактора
),
false
);
?>
<input value="submit" name="sub" type="submit" />
</form>

Ну вот и архив, можно посмотреть на пример, доработать и использовать. В следующий раз покажу как прикрутить к компоненту добавления элемента iblock.element.add.

Скачать

8 thoughts on “TinyMCE + 1с-Битрикс

  1. Здорово. Только без продолжения нам, новичкам, непонятно, как это всё прикрутить в админку)

    1. Так это же не для админки, а для вывода в публичке сайта. В админке зашит свой редактор.

  2. а опишите как прикрутить к «В следующий раз покажу как прикрутить к компоненту добавления элемента iblock.element.add» + возможно есть решение по вставке картинок в текст, по аналогии со вставкой картинок в блоге Битрикса (при добавлении/редактировании записи пользователем сайта)

  3. Подстава… я то думал это для админки… а это компонентик всего то…

  4. установил и подключил вышеописанным методом, но на целевой странице обычная текстарея появляется, без редактора. Что то где-то не цепляется

  5. Все привет, большое спасибо автору за Пост, я продолжу его мысль по поводу iblock.element.add и скажу что там ничего сложного, для добавления текста в например DETAIL_TEXT ничего не надо делать просто берем знаение $_POST[«content»] например и записываем, НО при отображении его обратно в редакторе надо написать html_entity_decode($_POST[«content»]) тогда все работает ОК

Comments are closed.