Дмитрий

Дмитрий

С нами с 16 декабря 2015; Место в рейтинге пользователей: #47
Михаил
10 февраля 2018, 16:53
2
+3
'select' => [
	'Hits' => '*',
	'modResource' => '*'
],
'leftJoin' => [
	'Hits' => [
		'class' => 'Hits',
		'on' => 'Hits.res = modResoirce.id'
	]
]
Василий Столейков
08 декабря 2017, 11:36
5
+4
Забыл отписаться для истории что решение было найдено!

Нужно добавить в нужный источник файлов булеву настройку hideSource:


и создать плагин на OnMediaSourceGetProperties:
<?php
$properties = json_decode($properties, true);
if (!empty($properties['hideSource']) AND !empty($properties['hideSource']['value']) AND $_REQUEST['node'] == '/') {
    die('{}');
}

Это очистит источники в дереве.
Алексей Ерохин
04 октября 2017, 12:06
1
+2
В документации есть примеры, странно что вы их не видите

{foreach 1..45 as $value}
	<option>{$value}</option>
{/foreach}
Alexey Medvedev
11 августа 2017, 17:01
1
0
Не за что. Короткий вариант (не закончил js-код).
$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"));
				}
			})
		</script>
	');
}
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"));
			}
	');
}
Klike
24 июля 2017, 08:50
1
0
ID шаблона можно получить сразу, без дополнительных запросов в бд:
$template = $modx->resource->template;
Василий Наумкин
21 июня 2017, 13:00
1
+2
pdoTools и PHP5.4+
<?php
$pdo = $modx->getService('pdoFetch');

return $pdo->getArray('modTemplateVarResource', 
    ['contentid' => $modx->resource->id , 'TemplateVar.name' => $tvName], 
    ['innerJoin' => ['TemplateVar' => ['class' => 'modTemplateVar']]]
)['value'];
Максим
20 марта 2017, 15:44
1
0
Спасибо! Очень хороший комментарий. Но я пока PHP только начинаю изучать и до плагинов и MODX API еще не дошел. Могли бы вы более детально написать как сделать с меню выбора контекстов?
А с TV полями атометки надо сбивать в бекенде а вот теги от дополнения TvSuperSelect уже во вронтенде
Марат Марабар
27 ноября 2016, 17:37
2
+1
Полученный чанк при ajax-запросе нужно распарсить, допустим в своём классе это можно сделать так:
private function getParserTag($content)
{
    $maxIterations = (integer) $this->modx->getOption('parser_max_iterations', null, 10);
    $this->modx->getParser()->processElementTags('', $content, false, false, '[[', ']]', array(), $maxIterations);
    $this->modx->getParser()->processElementTags('', $content, true, true, '[[', ']]', array(), $maxIterations);
        
    return $content;
}