Минимальное количество товара при покупке в форме добавления товара в корзину

Иногда возникает ситуация, что товар должен продаваться не поштучно, а например, комплектами по 10 штук, а цена соответственно указана за 1 штуку.

Для этого можно использовать встроенную функцию Virtuemart как минимальное количество продаваемого товара. Находится это поле в карточке товара.

Но, к сожалению, в формах на сайте value инпутов остается равным единице. Логично было бы подставлять наше значение минимального количества товара, но разработчики не догадываются это сделать. Выход, к счастью, нашелся на форуме virtuemart.net.

В файле /components/com_virtuemart/themes/ default/templates/ product_details/includes/ quantity_box_general.tpl.php нужно добавить следующий код после строки extract( $quantity_options );


<?php

//Minimum Quantity added by Asgard Development
require_once('administrator/components/com_virtuemart/classes/ps_product.php');
$minimum_quantity_ad = ps_product::product_order_levels($prod_id);

//Minimum Quantity added by Asgard Development
if($minimum_quantity_ad[0])
$quantity = $minimum_quantity_ad[0];

php?>

Как убрать сохранение номера страницы в Virtuemart?

Существует в Virtuemart такая странная баго-фича. Например, в категории товаров мы переходим на вторую страницу, затем возвращаемся на главную страницу, а потом опять заходим в эту категорию, то попадаем опять на вторую страницу. WTF? Некоторым покажется удобным, но клиенты сойдут с ума. Поэтому убираем:
В файле: /administrator/components/com_virtuemart/classes/mainframe.class.php
Найдем и уберем код

<span style="font-family: monospace;">if( isset($_SESSION['userstate'][$key]) &amp;&amp; !is_null($_SESSION['userstate'][$key])) {</span>
<code><code> return $_SESSION['userstate'][$key];
}

и далее

<span style="font-family: monospace;">$_SESSION['userstate'][$key] = $value;

Как убрать «Налог на стоимость заказа» в Virtuemart

Для многих магазинов налог учитывать в ценах совсем не обязательно, следовательно нужно избавляться от него. Сделать это очень просто. Для этого нужно исправить template-файлы корзины, лежат они в папке \administrator\components\com_virtuemart\html\templates\basket

В файлах basket_b2b.html.php и ro_basket_b2b.html.php находим и удаляем следующие строки:

if ( $tax ) { ?>
<tr>
<td colspan="4" align="right" valign="top"><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_TOTAL_TAX') ?>: </td>
<td align="right"><?php echo $tax_display ?></td>
</tr>
<?php }

В файлах basket_b2c.html.php и ro_basket_b2c.html.php убираем этот код:

<?php if ( $show_tax ) { ?>
<tr>
<td colspan="4" align="right" valign="top"><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_TOTAL_TAX') ?>: </td>
<td colspan="3" align="right""><?php echo $tax_display ?></td>
</tr>
<?php } ?>

Всплывающее уведомление virtuemart в Opera уходит вниз страницы?

Существует такой интересный глюк, когда окошко уведомления Virtuemart в Opera слетает вниз страницы. Обычно это происходит в старых версиях Virtuemart, насколько я помню эту ошибку уже исправили, но если вы столкнулись с этой проблемой, то вот решение.

Нужно внести изменения в файл components\com_virtuemart\js\mootools\mooPrompt.js

Нужно сделать поиск и замену с Window.getHeight() на (Window[‘innerHeight’] || Window.getHeight())

Кстати, если нужно поменять время задержки окна, то это делается в файле /components/com_virtuemart/themes/default/theme.js

Нужно найти строчку setTimeout( ‘document.boxB.close()’, 3000 ); и исправить значение на нужное в миллисекундах