MIGX конечно же предпочтительней по ряду причин, в

MIGX конечно же предпочтительней по ряду причин, в том числе и потому что не приходится 100500 ТВшек создавать. Вот я на одном проекте так докручивал галерею. В процессор получения товара дописал:

public function afterIteration(array $list){
        $list = parent::afterIteration($list);
   
        
        foreach($list as & $l){  
        
            switch($this->getProperty('image_url_schema')){
                case 'base':
                    $images_base_url = $this->modx->runSnippet('getSourcePath');
                    break;
                
                case 'full':
                    $images_base_url = $this->modx->getOption('site_url');
                    $images_base_url .= preg_replace("/^\//", "", $this->modx->runSnippet('getSourcePath'));
                    break;
                
                default: $images_base_url = '';
            }      
            /*
                Картинки
            */
            $l['images'] = array();
            
            if(!empty($l['tvs']['images']['value'])){
                $images = json_decode($l['tvs']['images']['value'], true);
                foreach($images as $image){
                    $image['image'] = $images_base_url.$image['image'];
                    $l['images'][] = $image;
                }
            }
        }
        return $list;
    }

А в шаблоне уже оформление по своему вкусу. У меня это вот так:

{if $object.images}
                    {foreach $object.images as $img}
                        {snippet name="phpthumbof" params="input=`{$img.image}`&options=`w=65&h=65&q=90`" assign=thumb}
                        <a rel="useZoom: 'zoom1', smallImage: '{$thumb}'" title="" href="{$img.image}" class="cloud-zoom-gallery">
                            <img alt="" src="{$thumb}">
                        </a>
                    {/foreach}
{/if}