[fileman] Как подключить блочный редактор 1С Битрикс

Подключить блочный редактор 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-оформление и хедер будет храниться отдельно в файлах шаблона.

Блочный редактор 1С Битрикс

Возможные проблемы

Бывает при изменении параметров редактора выводится ряд предупреждений, здесь надо очистить управляемый кэш /bitrix/managed_cache и предупреждения исчезнут.


Если удалить какой-нибудь из главных блоков дизайна, их три хедер + центр + футер, то редактор сбросит шаблон в исходное состояние, удалять любой их этих блоков, как я понял, нельзя.


Заключение

В целом решение интересное, но мне не понравилась реализация раздельного хранения блоков, часть в базе, часть в файлах, если с модулем обновится та часть шаблона в файлах, все письма сайта в любое время могут изменить свой вид или вообще сломаться, чем Битрикс в последние годы и грешит постоянно.

Вам советую в своих решениях сделать возможность пользователям копировать шаблоны, чтобы при обновлении вашего модуля пользовательские шаблоны оставались без изменений.

Возможно я что-то неправильно понял, напишите в комментариях.

Имя *
Логин (мин. 3 символа)
E-mail *
*— обязательные для заполнения поля
Логин или e-mail
TUNING-SOFT.RU Разработка умных веб-сервисов