1) Создаём шаблон - прокси, назовём его, допустим "ajaxproxy"
выводить шаблон будет только это:
[!ajax!]
2) Создаём пустую служебную страничку, применим к ней этот шаблон, и запомним её айдишник
3) создаём сниппет ajax :
//в $path запишем полный путь до папки где у нас лежит index.php MODx’а
$path = dirname($_SERVER[’SCRIPT_FILENAME’]).’/’;
// в корне рядом с index.php положим приаттаченный modxapi.php
// подключим его
include_once($path.’modxapi.php’);
// создадим ещё 1 шаблон, назовём его, допустим, ajaxcontent, и ему присвоится ID 10
// например, шаблон выводит [*content*] или [*sometvvariable*] нужного нам документа
define(’AJAX_TEMPLATE_ID’,’10’);
// создаём объект
$modx = new MODxAPI();
//и получаем вывод парсера, в $id нужно записать айдишник нужной странички
$html = $modx->executeDocument($id);
return $html;
Например, у меня вот так выводятся контент, и дополнительная переменная любой странички в нужном мне пустом шаблоне, причём по своей обычной ссылке она открывается в том шаблоне, который установлен у нее в свойствах
<?php
if (isset($_GET[’content’])){
$path = dirname($_SERVER["SCRIPT_FILENAME"]).’/’;
include_once($path.’modxapi.php’);
$modx2 = new MODxAPI();
define(’AJAX_TEMPLATE_ID’,

;
$html = $modx2->executeDocument((int)$_GET[’pageId’]);
return $html;
}
if (isset($_GET[’menu’])){
$path = dirname($_SERVER["SCRIPT_FILENAME"]).’/’;
include_once($path.’modxapi.php’);
$modx2 = new MODxAPI();
define(’AJAX_TEMPLATE_ID’, 9);
$html = $modx2->executeDocument((int)$_GET[’pageId’]);
return $html;
}
?>
Вызов:
//если id странички из пункта 2 - id=24, то аяксовый вызов любой странички будет такой
index.php?id=24&content=1&pageId=2 - выведет ОБРАБОТАННЫЙ контент документа с id=2
а
index.php?id=24&menu=1&pageId=2 - выведет ОБРАБОТАННОЕ содержимое TV-переменной документа с id=2
из html это можно использовать так: забиндим на клик по всем тегам <a> из нужной нам области свою функцию, если ссылки выглядят как <a href="?id=123">...</a> берём её хреф, регекспом находим значение id, и аяксом грузим ссылку навроде "index.php?id=24&conten=1&pageId=123"
тоесть, если яваскрипт выключен, сайт у нас будет работать как обычно, а если включен то с аяксом