Небольшой пример с выборками в shopModx
Хочу показать небольшой пример, который может пригодиться. Вот встала задача — выполнить какие-то действия с документами, которые являются разделами для различных товаров на сайте (массово шаблон обновить и т.п.). Но разделы и товары разбросаны по всему сайту, и логики особой нет. А вручную делать это лень. Что мы можем сделать в данной ситуации? На мой взгляд самое простое — просто сделать выборку всех родительских документов, которые есть к товаров. Но как это сделать, если товары разбросаны по всему сайту? В shopModx все товары имеют данные в связанной таблице, и класс этих данных называется ShopmodxProduct. Соответственно, если мы этот класс жестко включим в условия поиска, то мы обязательно получим именно документы товаров. А далее нам остается только добавить в запрос родительские документы для этих товаров. <?php modx->newQuery('modResource'); c->innerJoin('ShopmodxProduct', 'Product', 'Children.id=Product.resource_id');
modx->getCollection('modResource', $c);
foreach(doc){
// Здесь мы можем делать что хотим с документами разделов
print "
".doc->pagetitle;
} Конечно это не самый оптимальный запрос, так как количество записей будет гораздо больше, чем кол-во разделов, но все равно xPDO нам вернет только объекты разделов. Конечно памяти скушает больше чем надо, но если товаров меньше 1000, то не страшно. Тем более что это разовая операция.