Если нужно загрузить страницу, посредством ajax, то сделать это просто. Для этого надо создать сниппет с именем, например, ajaxLoadingContent. Туда записываем код:
$res = $modx->getObject('modResource',$_REQUEST['id']); $chunkName=$_REQUEST['chunk']; // получаем имя чанка $resid_int = $_REQUEST['id']; // айдишник ресурса $tvs = array(); $tv_query = $modx->newQuery('modTemplateVarResource'); $tv_query->leftJoin('modTemplateVar','modTemplateVar',array("modTemplateVar.id = tmplvarid")); $tv_query->where(array('contentid'=>$resid_int)); $tv_query->select($modx->getSelectColumns('modTemplateVarResource','modTemplateVarResource','',array('id','tmplvarid','contentid','value'))); $tv_query->select($modx->getSelectColumns('modTemplateVar','modTemplateVar','',array('name'))); $tvars = $modx->getCollection('modTemplateVarResource',$tv_query); foreach ($tvars as $tvar) { $tvar = $tvar->toArray(); if (!empty($tvar['value'])) $tvs[$tvar['name']] = $tvar['value']; } // выводим echo $modx->getChunk($chunkName,$res->_fields+$tvs);
Сейчас создадим шаблон, например, ajax-content, для страницы, с которой будут приходить данные. В этом шаблоне просто добавим вызов нашено сниппета:
[[!ajaxLoadingContent]]
Теперь создадим страницу, на которую скрипт будет отправлять айдишник ресурса и имя чанка. Тут ВАЖНО выбрать созданный ранее шаблон для этой страницы, в нашем случае ajax-content.
Далее создаём ссылку, по которой будет загружаться наша страница:
<a> dataId="19" chunkName="chunkForAjaxLoadContent" onclick="linkClickAjax(this); return false;" href="about.html">страница обо мне</a>
Тут dataId - это ID ресурса, который должен загрузиться, chunkName - это имя чанка, в котором будет обрабатываться страница, которую будем загружать. В атрибуте onclick функция, которая сработает при клике, по этой ссылке.
Собственно сама функция:
var linkClickAjax = function(el){ $('#rightCol').html('Идет загрузка данных...'); $.post( "/ajax-content.html", // страница, с которой забрать нужные данные { id: $(el).attr('dataId'), // получаем ID ресурса, который должен быть загружен chunk: $(el).attr('chunkName') // получаем имя чанка, по которому он должен быть обработан }, function(data) { $('#rightCol').html(''); // когда данные получины, записываем их в нужный блок $('#rightCol').html(data); } ); };
Страница, которая будет загружаться через ajax