Массовое удаление ресурсов [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 - глубина вложенности

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