Удалить все ресурсы парента [MODX]

Удаление любого количества ресурсов в заданном ресурсе
31 Октября 2023
php

При работе с большим количество ресурсов в modx, иногда требуется удалить все ресурсы в подкатегории, сколько бы их там не было.

Мы используем 2 варианта в зависимости от ситуации:

  1. Подходит для удаления всех ресурсов, когда глубина ресурсов не большая

    $ docs=$ modx->getCollection('modResource', array('parent' => 23));
    foreach ($ docs as $ doc) { 
        $ doc->remove();
    } 
    
  2. Подходит для случаев когда глубина более 5, в данном случае мы получаем все id ресурсов, а после этого удаляем по id такие ресурсы

    $ ids = $ modx->getChildIds(23, 6); // 23 - парент, 6 глубина на которой нужно искать ресурсы
    $ docs = $ modx->getCollection('modResource', array(
        'id:IN' => $ ids
    ));
    foreach ($ docs as $ doc) { 
        $ doc->remove();
    }