можно делать это через обращение к коннектору (как обрабатывается корзина в shopmodxbox) Я по привычке использую другой вариант: создаю документ (например ajax), обязательно некешируемый, и для него создаю шаблон, делаю его статичным и назначаю ему свой php-файл (благодаря расширению templatephp код шаблона может содержать php инструкции) — и там творю что душе угодно. там доступен весь MODX c его вкусностями: <?php if($_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest'){ switch($_REQUEST['action']){ case 'getmenu': $id=(int)$_REQUEST['id']; $r=$modx->getObject('modResource',array('id'=>$id,'template'=>20)); if($r){ $output=$r->get('content'); $maxIterations= intval($modx->getOption('parser_max_iterations', $params, 10)); $modx->parser->processElementTags('', $output, true, false, '[[', ']]', array(), $maxIterations); $modx->parser->processElementTags('', $output, true, true, '[[', ']]', array(), $maxIterations); $ttl=$r->get('longtitle'); if(empty($ttl)) $ttl=$r->get('pagetitle'); return $output; } else{ return 'Ошибка: страница не найдена'; } break;
case 'service':
$id=(int)$_REQUEST['id'];
$r=$modx->getObject('modResource',array('id'=>$id,'template:in'=>array(3,17)));
if($r){
$output=$r->get('content');
$maxIterations= intval($modx->getOption('parser_max_iterations', $params, 10));
$modx->parser->processElementTags('', $output, true, false, '[[', ']]', array(), $maxIterations);
$modx->parser->processElementTags('', $output, true, true, '[[', ']]', array(), $maxIterations);
$ttl=$r->get('longtitle');
if(empty($ttl))
$ttl=$r->get('pagetitle');
$out=json_encode(array('title'=>$ttl, 'content'=>$output, 'alias'=>$r->get('alias')));
return $out;
}
else{
return json_encode(array('title'=>'Ошибка: страница не найдена', 'content'=>''));
}
break;
...