Вопрос решил чуть по другому, не через модельку и функцию вывода фото, а сам способ вывода товаров + фото к ним на главной странице из раздела хиты продаж.
Может кому надо будет.
$subQuerySelect = [
DB::select(DB::expr('substring_index(GROUP_CONCAT(ZZ.image SEPARATOR ","), ",", 2)'))
->from(['images', 'ZZ'])
->where('ZZ.product_id', '=', DB::expr('products.id'))
->group_by('ZZ.product_id')
->limit(1),
'productImages'
];
//подгружаем товары из подкатегории по id
$subQueryWhere = DB::select('product_id')
->from('categoriesmultis')
->where('category_id', '=', 20538);
//выводим в шаблон товары и фото
$this->template->block_1 = DB::select($subQuerySelect, DB::expr('products.*'))
->from('products')
->where('status', '=', 1)
->order_by('sorts', 'DESC')
->where('id', 'IN', $subQueryWhere)
->limit(8)
->as_object('Model_ProductsTable')
->execute();
В шаблоне вывод товара и фото с заглушкой если нет фото.
<?php foreach ($block_1 as $product_1) : ?>
<h2><?= $product_1->prname ?></h2>
<?php if ($product_1->productImages) : ?>
<?php $productImages = explode(',', $product_1->productImages); ?>
<?php foreach ($productImages as $imageName) : ?>
<img src="/media/uploads/small/small-<?= $imageName ?>" />
<?php endforeach ?>
<?php else : ?>
<img src="/media/uploads/nofoto.jpg" alt="Нет фото на товаре" title="Нет фото" />
<?php endif; ?>
<?php endforeach ?>
А делал я это для того, чтобы при наведении на фотку у товара, фотка менялась, для этого я и выводил две фотки, чтобы одна пряталась за другую, ну и при наведении на фото, она скрывалась, а вторая показывалась.