Вообще проще всего использовать процессор web/reso

Вообще проще всего использовать процессор web/resources/getdata. Но если у вас задача перебрать большое количество товаров, то да, надо запрос делать на чистом xPDO. Но надо для этого четко понимать что есть что. ShopmodxResourceProduct — производный от modResource класс документа товара. ShopmodxProduct — дополнительный класс товара. По сути, чтобы получить только товары, надо в запросе таблицы этих объектов объединить джоином. Вот пример выборки: q=q = modx->newQuery('modResource'); q>innerJoin(ShopmodxProduct,Product);q->innerJoin('ShopmodxProduct', 'Product'); q->where(array( "deleted" => 0, "published" => 1, )); q>select(array("modResource.",));q->select(array( "modResource.*", )); s = q>prepare();q->prepare(); s->execute(); while(row=row = s->fetch(PDO::FETCH_ASSOC)){ // Ваш код }