При работе с большим количество ресурсов в 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();
}