На сайте сообщества задали вопрос о том, как подключить редактор кода к полям description и introtext. В своё время я для себя решал такую задачу для поля introtext. Вот делюсь немного доработанным решением как подключить Ace к любым текстовым полям формы ресурса.

Создаём плагин и вешаем его на событие OnDocFormPrerender.

<?php
switch ($modx->event->name) {
    case 'OnDocFormPrerender':
        if (!$modx->controller->resourceArray) {
            return;
        }
        // Указываем поля, для которых будет подключаться Ace
        $fields = array('modx-resource-introtext','modx-resource-description');
        $mimeType = $modx->getObject('modContentType', $modx->controller->resourceArray['content_type'])->get('mime_type');
        if ($mimeType == 'text/html' && $modx->getOption('pdotools_fenom_parser')) {
            $mimeType = 'text/x-smarty';
        }
        $modxTags = 1;
        $script = '';
        foreach($fields as $field) {
          $script .= "MODx.ux.Ace.replaceComponent('$field', '$mimeType', $modxTags);";
        }
        $script .= "MODx.ux.Ace.replaceTextAreas(Ext.query('.modx-richtext'));";
        // Увеличиваем поле introtext
        $script .= "Ext.getCmp('modx-resource-introtext').setHeight(150);";
        $modx->controller->addHtml('<script>Ext.onReady(function() {' . $script . '});</script>');
        break;
    default:
        return;
}

Данное решение пригодится и для элементов. Нужно лишь изменить событие плагина и mimeType элемента. Подсмотреть это можно в оригинальном плагине Ace.

23 апреля 2016, 11:55   1476     3

Комментарии ()

  1. Роман 21 мая 2018, 00:25 # 0
    Доброго времени суток! Подскажите, есть ли возможность подключить редактор Ace к TV полям? За ранее спасибо за ответ!
    1. Сергей Шлоков 21 мая 2018, 10:36 # 0
      Думаю да. Подключить можно к любому доступному textarea.
      1. Роман 21 мая 2018, 11:44 # +1
        Сергей, огромное спасибо за исчерпывающий ответ! А могли бы вы подсказать(не на словах, а примером кода), как это сделать? За ранее спасибо за ответ!

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.