Подключить блочный редактор 1С Битрикс в своем модуле или каком-нибудь решении очень просто, пример кода:
<?
Loader::includeModule('fileman');
$siteId = 's1';
$fieldName = 'FIELD['.$siteId.'][MAIL_HTML]';
$fieldId = 'API_MAIL_HTML_' . $siteId;
$fieldValue = htmlspecialcharsbx($VALUE['MAIL_HTML']);
$editorParams = array(
'id' => $fieldId,
'charset' => LANG_CHARSET,
'site' => $siteId,
'own_result_id' => $fieldId,
'url' => '/bitrix/components/bitrix/sender.template.selector/ajax.php?lang=ru&template_type=BASE&template_id=mail_inc_profits&action=getTemplate&sessid=' . bitrix_sessid(),
'previewUrl' => '', //'/bitrix/components/bitrix/sender.mail.editor/ajax.php?action=preview&sessid=' . bitrix_sessid(),
'saveFileUrl' => '', //'bitrix/components/bitrix/sender.mail.editor/ajax.php?action=saveFile&sessid=' . bitrix_sessid(),
'templateType' => '',
'templateId' => '',
'isTemplateMode' => true,
'isUserHavePhpAccess' => true,
'useLightTextEditor' => false,
);
$isBlock = true;
?>
<div class="sender-message-editor-mail-wrapper">
<div data-bx-editor-plain="" style="<?=($isBlock ? 'display: none;' : '')?>">
<textarea data-bx-input=""
id="<?=$fieldId?>"
name="<?=$fieldName?>"
style="height: 320px; width: 100%;"
class="typearea"><?=$fieldValue?></textarea>
</div>
<div data-bx-editor-block="" style="<?=(!$isBlock ? 'display: none;' : '')?>">
<?=Block\EditorMail::show($editorParams);?>
</div>
</div>
Пояснения по коду
- Название поля
$fieldName
может быть любым, редактор слушает идентификатор$fieldId
- Значение поля
$fieldValue
берется из базы, но в базе редактор хранит только блоки, весь html-код хранится в шаблонах, главный шаблон в файлеtheme.php
/bitrix/modules/sender/preset/template_v2
url
запрашивает html-шаблон и подгружает в редактор динамически при открытии страницыpreviewUrl
иsaveFileUrl
если вообще не существуют в параметрах, то слушают следующие пути в модулеУправление структурой (fileman)
, обратите на это внимание, закомментируйте данные параметры, чтобы заработал предпросмотр.
if (!isset($params['previewUrl'])){
$params['previewUrl'] = '/bitrix/admin/fileman_block_editor.php?action=preview_mail';
}
if (!isset($params['saveFileUrl'])){
$params['saveFileUrl'] = '/bitrix/admin/fileman_block_editor.php?action=save_file';
}
Результат подключения
Вот так будет выглядеть блочный редактор в вашем модуле, предпросмотр, форматирование, а также несколько экземпляров на странице все работает, подставляй только свои шаблоны и вперед, но этот момент вам нужно будет как-то доработать, потому что при сохранении формы в базу редактор сохраняет только блоки, а все остальное css-оформление и хедер будет храниться отдельно в файлах шаблона.
Возможные проблемы
Бывает при изменении параметров редактора выводится ряд предупреждений, здесь надо очистить управляемый кэш /bitrix/managed_cache
и предупреждения исчезнут.
Если удалить какой-нибудь из главных блоков дизайна, их три хедер + центр + футер, то редактор сбросит шаблон в исходное состояние, удалять любой их этих блоков, как я понял, нельзя.
Заключение
В целом решение интересное, но мне не понравилась реализация раздельного хранения блоков, часть в базе, часть в файлах, если с модулем обновится та часть шаблона в файлах, все письма сайта в любое время могут изменить свой вид или вообще сломаться, чем Битрикс в последние годы и грешит постоянно.
Вам советую в своих решениях сделать возможность пользователям копировать шаблоны, чтобы при обновлении вашего модуля пользовательские шаблоны оставались без изменений.
Возможно я что-то неправильно понял, напишите в комментариях.