Простое решение с внесением изменений в ядро системы.
1. В корне сайта создаем файл errors.html, куда записываем то, что хотим показывать вместо ошибок MODx.
2. В файле document.parser.class.inc.php находим строку
echo $parsedMessageString;
и меняем ее на
$errorHtmlFile=$this->config['base_path'].'errors.html';
if (file_exists($errorHtmlFile) && !$this->checkSession())
readfile($errorHtmlFile);
else
echo $parsedMessageString;
Все. Теперь если менеджер из административной части просматривает страницу с ошибкой, ему выдается системное сообщение, а если просматривает пользователь, ему выдается заранее подготовленная страница. При этом заголовок ответа сервера все равно будет 500, то есть выдается ошибка – это гарантирует, что страница с ошибкой не будет проиндексирована поисковыми системами.
Чтобы вернуться к стандартной схеме, достаточно удалить файл errors.html.