Сергей

Сергей

С нами с 26 февраля 2016; Место в рейтинге пользователей: #689
Alexey Medvedev
11 августа 2017, 16:56
6
0
Знаю, что прошло три года, но может кому пригодится. Это кусок моего плагина. (там ещё RTE подключается для определенные категорий ресуров)

создаем плагин, событие на «OnDocFormRender» с кодом:
$script = '';
$resource = ($resource instanceof modResource) 
            ? 
            $modx->getObject('modResource',$resource->get('id')) 
            : $modx->getObject('modResource',(int)$resource);

// ACE
// Настройка под определенный тв-параметр в шаблоне
$templates_enable = array( // [id-шаблона] => array('tv[id-тв]')
    '3' => array('tv14'),
    '4' =>  array('tv14')
);

if ( $resource instanceof modResource && array_key_exists($resource->get('template'), $templates_enable) ) {
    $script .= 'if (MODx.ux.Ace.replaceTextAreas) {';
    foreach ($templates_enable[$resource->get('template')] as $tv) {
        $script .= 'MODx.ux.Ace.replaceTextAreas(Ext.query("textarea#' . $tv . '"));';
    }
    $script .= '}';
}
$modx->regClientStartupHTMLBlock('<script>Ext.onReady(function(){' . $script . '})</script>');
id шаблонов и тв-параметров находятся в скобках в дереве элементов.

Короткий вариант для всех блоков «Текстовая область»:
$resource = ($resource instanceof modResource) 
            ? 
            $modx->getObject('modResource',$resource->get('id')) 
            : $modx->getObject('modResource',(int)$resource);
if ( $resource instanceof modResource ) {
	$modx->regClientStartupHTMLBlock('
		<script>Ext.onReady(function(){
			if (MODx.ux.Ace.replaceTextAreas) {
				MODx.ux.Ace.replaceTextAreas(Ext.query(".x-form-textarea"));
			}
	');
}