Вот решение.
Те документы, для потомков которых вы хотите задать шаблон по умолчанию (все ваши папки-контейнеры), должны иметь шаблон, содержащий дополнительный параметр childs_template — ID шаблона, который будут иметь дочерние документы.
Inherit Parent Template должен выглядеть так.
global $content;
$e = &$modx->Event;
switch($e->name) {
case 'OnDocFormPrerender':
if(($_REQUEST['pid'] > 0) && ($id == 0)) {
$result = $modx->getTemplateVars(array('childs_template'), "*", $_REQUEST['pid'], 1, "", "");
if ($result[0]['value'] != '') {
$content['template'] = $result[0]['value'];
}
else if ($parent = $modx->getPageInfo($_REQUEST['pid'],0,'template')) {
$content['template'] = $parent['template'];
}
}
break;
default:
return;
break;
}
Для большего удобства выбора шаблона добавте сниппет TemplateSelector:
if(!function_exists("getAllTemplates")) {
function getAllTemplates() {
global $modx;
$out = "";
$sql = "SELECT id, templatename FROM " . $modx->getFullTableName('site_templates');
$result = $modx->db->query($sql);
while($t = $modx->db->getRow($result)) {
$out .= $t['templatename'] . "==" . $t['id'] . "||";
}
return $out;
}
}
return getAllTemplates();
И как возможные значения для поля childs_template укажите следующую строку
@EVAL return $modx->runSnippet("TemplateSelector");
Это работает. Наслаждайтесь.