Думаю, решение по добавлению целой формы в макет категории несколько устаревшее и тянется из предыдущих версий VirtueMart.
В современном же 2 VirtueMart такая форма в случае с макетом детального вида товара (откуда она в принципе и берётся) идёт в отдельном файле productdetails/default(или-Ваше-название-макета)_addtocart.php.
Так вот следующее решение, на которое случайно наткнулся, мне понравилось больше, оно куда изящнее и функциональнее)
Нужно:
1. Если не было, то скопировать файл components/com_virtuemart/views/productdetails/tmpl/default_addtocart.php к себе в шаблон templates/ваш-шаблон/html/com_virtuemart/category/default(или-ваше-название)_addtocart.php
Разумеется, если используете свой макет категории (не default.php) то и называем файл соответственно.2. В файле templates/ваш-шаблон/html/com_virtuemart/category/default.php(или Ваше название) (если его нет в шаблоне, то создать копированием из components/com_virtuemart/views/category/tmpl/default.php) сразу после
// Start the Output
foreach ($this->products as $product) {
Вставляем
$this->product = $product;
3. Для вывода кнопки вставляем в понравившееся место в файле templates/ваш-шаблон/html/com_virtuemart/category/default.php(или Ваше название) код
<?php echo $this->loadTemplate('addtocart'); ?>
Этот вариант, на мой взгляд, намного более предпочтительный. К примеру, если Вам нужно будет временно использовать магазин как каталог, и Вы поставите соответствующую галочку в настройках, то с этим вариантом всё будет, как положено, а вот с ручной вставкой формы, как описывалось выше, тут под вопросом))) И много других примеров.
Кстати, ещё от себя добавлю, что если у Вас в шаблоне уже был до этого productdetails/default(или-ваше-название)_addtocart.php, то на 1 шаге копировать лучше не из компонента а из своего шаблона, чтобы выводилось одинаково в категории и в детальном виде, хотя это, конечно же, по желанию.