Ух ты, похоже, что да, оно. Да и из своего модуля все-таки кошернее. Отпишусь по-результату. Спасибо.

Ничего не выводит, похоже, что я совсем не туда вставляю код. Помогите найти, где происходит первичное формирование запроса для вывода каталога.

А разве сам по себе join не подразумевает, что в выборку попадает только пересечение? Таким образом моя логика говорит мне, что останутся в выборке только товары, у которых есть соответствие в таблице с изображениями. Разве не так?

Не работает ))

Добрый день. Хотел спрятать в каталоге товары без фото. В классе \Catalog\Model\Api метод filterRequest изменил следующим образом, чтобы в выборку попали только товары, для которых есть соответствие в таблице с фотографиями:

function filterRequest()
    {
        $config = \RS\Config\Loader::byModule($this);

        \RS\Orm\Request::make()
                ->join($this->obj_instance, 'P.id = A.entity_id', 'P')
                ->where('public = 1');
        if ($config['hide_unobtainable_goods'] == 'Y') {
            $q->where('num > 0');
        }
        $adv_config = \RS\Config\Loader::byModule("custom");

        if ($adv_config['hide_nophoto_product'] == 1) {
            $q->join(new \Photo\Model\Orm\Image, 'I.linkid = A.entity_id', 'I');
        }
        return $q;
    }

Соответственно в конфиге модуля custom данная настройка есть и установлена в 1.