Если вы хотите дописать это (получение галереи товара) в исходный процессор получения товаров, то вы все это объединяете в одном цикле, то есть получится так:
public function afterIteration(array $list){ $list = parent::afterIteration($list); 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 = ''; } foreach($list as & $l){ // Базовая картинка $l['image'] = ''; if(!empty($l['tvs']['image']['value'])){ $l['image'] = $images_base_url . $l['tvs']['image']['value']; } else{ $l['imageDefault'] = $images_base_url . 'products/No-Photo.jpg'; } /* Картинки */ $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; }
А если вы расширяете процессор, то за это не паритесь, потому что там все равно вызывается родительский метод, так что картинка будет учтена и базовая.
public function afterIteration(array $list){ $list = parent::afterIteration($list);
В общем, здесь конечно же хорошо бы ООП понимать.