По мотивам:
http://forums.modx.com/thread/72760/solution-how-exclude-node-in-getresources-add-on.
В процессе использования модуля
getResources весь процесс стопорнул один момент — отсутствие возможности исключить целую ветвь ресурсов (документов), только конкретную страницу. Мое решение помогает в этой проблеме.
Открываем сниппет
getResources и заменаем (строка 265):
foreach ($resources as $resource) {
на
$exclude_node = array();
foreach ($resources as $resource) {
if (strpos($resource,'*')) {
$exclude_node[] = abs(str_replace('*','',$resource));
continue;
}
Добавляем после (строка 371):
foreach ($collection as $resourceId => $resource) {
кусок кода:
if (!empty($exclude_node)) {
$parentIds = $modx->getParentIds($resource->get('id'));
$temp = array_intersect ($parentIds, $exclude_node);
if (!empty($temp)) continue;
}
Теперь вы можете использовать в вызове сниппета "*" после Id ресурса (документа, страницы):
[[!getResources:default=`No results found`? &parents=`0` &resources=`-10,-20*` &tpl=`Template`]]
и сниппет исключит документы 10, 20 и все дочерние у 20-ого.