При работе с большим количество ресурсов в modx, иногда требуется удалить все ресурсы в подкатегории, сколько бы их там не было.
Мы используем 2 варианта в зависимости от ситуации:
Подходит для удаления всех ресурсов, когда глубина ресурсов не большая
$ docs=$ modx->getCollection('modResource', array('parent' => 23));
foreach ($ docs as $ doc) {
$ doc->remove();
}
Подходит для случаев когда глубина более 5, в данном случае мы получаем все id ресурсов, а после этого удаляем по id такие ресурсы
$ ids = $ modx->getChildIds(23, 6); // 23 - парент, 6 глубина на которой нужно искать ресурсы
$ docs = $ modx->getCollection('modResource', array(
'id:IN' => $ ids
));
foreach ($ docs as $ doc) {
$ doc->remove();
}