Пост скорее для новичков битрикса. В нем я хочу показать как просто и легко можно создать компонент. Мы сделаем компонент по выводу виз редактора (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>
Итак как использовать. Просто подключается вот в таком виде:
[source language=’php’]
echo $_POST['content'] ?>
echo $_POST['content2'] ?>
[/source]
Ну вот и архив, можно посмотреть на пример, доработать и использовать. В следующий раз покажу как прикрутить к компоненту добавления элемента iblock.element.add.
Здорово. Только без продолжения нам, новичкам, непонятно, как это всё прикрутить в админку)
Так это же не для админки, а для вывода в публичке сайта. В админке зашит свой редактор.
а опишите как прикрутить к «В следующий раз покажу как прикрутить к компоненту добавления элемента iblock.element.add» + возможно есть решение по вставке картинок в текст, по аналогии со вставкой картинок в блоге Битрикса (при добавлении/редактировании записи пользователем сайта)
Подстава… я то думал это для админки… а это компонентик всего то…
в админке свой редактор
установил и подключил вышеописанным методом, но на целевой странице обычная текстарея появляется, без редактора. Что то где-то не цепляется
Все привет, большое спасибо автору за Пост, я продолжу его мысль по поводу iblock.element.add и скажу что там ничего сложного, для добавления текста в например DETAIL_TEXT ничего не надо делать просто берем знаение $_POST[«content»] например и записываем, НО при отображении его обратно в редакторе надо написать html_entity_decode($_POST[«content»]) тогда все работает ОК
спасибо, пригодилось! прицепил его к комментариям