Задача, конечно, тривиальная, но где гарантия, что я не забуду через полгода-год, как это делать 🙂 Надо, чтобы в категории Virtuemart 2 пользователь мог заказать купить товар. Делов-то.
Открываем файл /components/com_virtuemart/views/category/tmpl/default.php (этот файл как раз только и занимается тем, что выводит товары в список категории). Я начал писать со строки 264 (после названия товара):
<h2><?php echo JHTML::link ($product->link, $product->product_name); ?></h2>
Вставляем этот код:
<form method="post" class="product" action="index.php" id="addtocartproduct<?php echo $product->virtuemart_product_id ?>"> <?php if (isset($product->min_order_level)) $step = $product->min_order_level; else $step = 1; if ($step == 0) $step = 1; $alert = JText::sprintf('COM_VIRTUEMART_WRONG_AMOUNT_ADDED', $step); ?> <div class="addtocart-bar"> <?php // Display the quantity box ?> <span class="quantity-box"> <input type="text" class="quantity-input" name="quantity[]" value="<?php echo $step ?>" /> </span> <span class="quantity-controls"> <input type="button" class="quantity-controls quantity-plus" /> <input type="button" class="quantity-controls quantity-minus" /> </span> <?php // Display the quantity box END ?> <?php // Add the button $button_lbl = JText::_('COM_VIRTUEMART_CART_ADD_TO'); $button_cls = ''; //$button_cls = 'addtocart_button'; if (VmConfig::get('check_stock') == '1' && !$product->product_in_stock) { $button_lbl = JText::_('COM_VIRTUEMART_CART_NOTIFY'); $button_cls = 'notify-button'; } ?> <?php // Display the add to cart button ?> <span class="addtocart-button"> <input type="submit" name="addtocart" class="addtocart-button" value="<?php echo $button_lbl ?>" title="<?php echo $button_lbl ?>" /> </span> <div class="clear"></div> </div> <?php // Display the add to cart button END ?> <input type="hidden" class="pname" value="<?php echo $product->product_name ?>"> <input type="hidden" name="option" value="com_virtuemart" /> <input type="hidden" name="view" value="cart" /> <noscript><input type="hidden" name="task" value="add" /></noscript> <input type="hidden" name="virtuemart_product_id[]" value="<?php echo $product->virtuemart_product_id ?>" /> <?php /** @todo Handle the manufacturer view */ ?> <input type="hidden" name="virtuemart_manufacturer_id" value="<?php echo $product->virtuemart_manufacturer_id ?>" /> <input type="hidden" name="virtuemart_category_id[]" value="<?php echo $product->virtuemart_category_id ?>" /> </form>
По сути, этот же код выводит кнопу «Купить» в карточке товара. Отличия есть, предлагаю вам найти их самим, они не настолько глобальны, чтобы заострять на них внимание.
Кстати, в этом коде я учел минимальное количество, которое может заказать пользователь (оно само проставляется в поле «Количество»):
<?php if (isset($product->min_order_level)) $step = $product->min_order_level; else $step = 1; if ($step == 0) $step = 1; $alert = JText::sprintf('COM_VIRTUEMART_WRONG_AMOUNT_ADDED', $step); ?>
<input type="text" class="quantity-input" name="quantity[]" value="<?php echo $step ?>" />
Ну, вот как-то так…