Испробуйте давно уже существующее решение.
Параметр VirtueMart "Максимальное количество отображаемых на одной странице товаров" (находится в - > Настройки/Внешний вид), установите в ноль или просто оставьте поле пустым. Затем, в файле
/plugins/xmap/com_virtuemart/com_virtuemart.php
(это строка примерно 135) следующие строчки кода:
if ($params['include_products']) {
$products = self::$productModel->getProductsInCategory($catid);
изменяем на:
if ($params['include_products']) {
if ($catid) {
$products = self::$productModel->getProductsInCategory($catid);
}
Теперь товары отображены корректно в вашей карте сайта XMAP.