setPlaceholder('vendor_name', htmlspecialchars($vendorName)); if (empty($vendorName)) { return '

Производитель не указан.

'; } // Ищем производителя $vendor = $modx->getObject('msVendor', ['name:=' => $vendorName]); if (!$vendor) { return '

Производитель "' . htmlspecialchars($vendorName) . '" не найден.

'; } $vendorId = (int)$vendor->get('id'); if ($vendorId === 0) { return '

Ошибка: Неверный ID производителя.

'; } // Получаем ID всех категорий, где есть товары производителя $categories = $modx->getCollection('msProduct', [ 'Data.vendor' => $vendorId, 'parent:!=' => 0, 'published' => 1, 'deleted' => 0 ]); $categoryIds = array_unique(array_column($categories->toArray(), 'parent')); if (empty($categoryIds)) { return '

Товары производителя "' . htmlspecialchars($vendorName) . '" не найдены.

'; } // Основные параметры для pdoPage $params = [ 'element' => 'msProducts', // Используем msProducts для вывода товаров 'parents' => implode(',', $categoryIds), 'where' => [ 'Data.vendor' => $vendorId ], 'tpl' => 'tpl.msProducts.row', 'limit' => 100, 'includeThumbs' => 'small', 'sortby' => 'menuindex', 'sortdir' => 'ASC', 'groupby' => 'parent', // Группируем по категориям 'showLog' => 1 // Для отладки ]; // Добавляем пагинацию $output = $modx->runSnippet('pdoPage', $params); $output .= $modx->getPlaceholder('page.nav'); return $output;