Можно попробовать таким образом.
Сначала сниппетом
getImageList создаем список id ресурсов через запятую:
[[!getImageList?
&tvname=`migx_recommended_brands`
&tpl=`@CODE: [[+brand]]`
&toPlaceholder=`kakoytoplaceholder`
&outputSeparator=`,`
]]
Инструкция по параметрам getImageList.
А потом используем для вывода сниппет
pdoResources, который отфильтрует неопубликованные и удаленные.
[[!pdoResources?
&parents=`0`
&depth=`0`
&resources=`[[+kakoytoplaceholder]]`
&tpl=`recommended_service`
&includeTVs=`preview_image`
]]
Чанк
recommended_service:
<div class="col-md-6 mb-base col-xl-3" style="">
<a class="brand" href="[[~[[+id]]]]">
<span class="brandtext">[[+pagetitle]]</span>
<img class="img-fluid" src="[[+tv.preview_image:pThumb=`&w=250&h=200&zc=0`]]" alt="">
</a>
</div>
Но, если бы это был мой проект, то я бы прежде попробовал написать свой сниппет, который сначала проверял TV migx_recommended_brands: удалял бы там id несуществующих ресурсов, отфильтровывал неопубликованные и самостоятельно делал бы вывод.