я бы в данном случае migx использовал бы, так как

я бы в данном случае migx использовал бы, так как все TV вроде однотипные, то по-моему проще из 22 одно, хоть и с JSON массивом сделать. Да и запрос лучше с JOIN-ом писать т.к. 1 запрос пусть и громоздкий лучше чем 1000.

$query = $modx->newQuery('modTemplateVarResource');
$query->innerJoin('modResource','modResource','modTemplateVarResource.contentid=modResource.id');
$query->where(array(
   'modResource.parent' => 2,
   'modResource.deleted'=> 0,
   'modTemplateVarResource.tmplvarid'=>1
));
$Tv = $modx->getCollection('modTemplateVarResource',$query);
foreach($Tv as $key){
    print($key->get('value'));
    print(' || ');
}