We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 37971
    • 14 Posts
    По мотивам: 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-ого.