Массовое удаление ресурсов [MODX]

Массовое удаление ресурсов используя xPDO на php
16 Августа 2024
php

Если вам необходимо удалить ресурсы без вложенности, просто все ресурсы парента, то достаточно выполнить следующий код:

$docs=$modx->getCollection('modResource', array('parent' => 23));
foreach ($docs as $doc) {
    $doc->remove();
}

Но бывают ситуации, когда есть большая глубина вложенных ресурсов и всех их нужно безвозвратно удалить, для этого нам поможет getChildIds

  1. Собираем все id ресурсов, любой вложенности, так же можно задать контекст
  2. Получаем объекты ресурсов
  3. В цикле удаляем все объекты
$ids = $modx->getChildIds(56, 7);
$docs = $modx->getCollection('modResource', array(
    'id:IN' => $ids
));
foreach ($docs as $doc) {
    $doc->remove();
}

Где 56 - id парента, 7 - глубина вложенности

Документация