Самое прекрасное — это когда нужна поддержка сайта, а ты сидишь с телефоном
в руке и ЗНАЕШЬ, чей номер набрать! т. +7 831 4637611 моб. +7 910 3820622Айтишник РУ Нижний Новгород, Симферопольская, 21
A+ A A-

Virtuemart - изменение цены в зависимости от свойства товара

Многие владельцы интернет магазинов на Virtuemart 1.1.x сталкивались со следующей задачей: есть варианты одного и того же товара, которые отличаются друг от друга только каким-нибудь свойством, например, размером, фасовкой, массой, цветом, запахом, формой и т. д. При этом цены для разных вариантов могут различаться. И это естественно – не может же пятисотграммовая упаковка чая стоить столько же, сколько стограммовая упаковка точно такого же чая!

Как же пытаются решить эту задачу? Те, кто совсем не хочет вникать в Virtuemart, просто вводят несколько товаров. Отдельно вводится товар «Пачка чая 100 г», отдельно товар «Пачка чая 200 г» и т. д. Более продвинутые администраторы заводят для товара свойство, например «масса», к которому добавляют несколько особенностей, например, «100 г» или «200 г» и т. д. Для каждой из особенностей стандартными средствами Virtuemart устанавливаются цены вида: +100 или -12. В результате этого в карточке товара «Чай» появляется раскрывающийся список «Масса», в котором покупатель может выбрать упаковку нужной ему массы. Но у этого способа есть ряд недостатков. Выбор упаковки другой массы не меняет цену в карточке товара, а покупатель видит лишь разницу в цене. Покупателю это не удобно – он хочет сразу видеть цену за приобретаемый товар, а не высчитывать её. К тому же вид «+100» или «-12» на мой взгляд не добавляет презентабельности. Администратору же магазина тоже приходится каждый раз пересчитывать разницу при изменении цены товара.
Как сказал один исторический персонаж: «Мы пойдём другим путём!». В этой статье я опишу, как в Virtuemart1.1.x сделать автоматическое изменение цены в зависимости от выбранного свойства товара. В качестве примера возьму свечной гель.
Магазин предлагает свечной гель в разной фасовке: 400 г за 200 руб. и 800 г. за 400 руб. В свойствах товара устанавливаем цену за минимальную фасовку 200 руб.

Virtuemart цена товара

На вкладке «Статус товара» вводим новое свойство «Фасовка». Для нового свойства вводим две особенности: 400 г и 800 г. Выставляем соответствующие цены (со знаком равенства) для каждой особенности и сохраняем изменения.

Virtuemart свойства и особенности

Теперь правим код. Сначала в индексном файле шаблона сайта /templates/шаблон_вашего_сайта/index.php подключим jQuery. Для этого перед закрывающимся заголовочным тегом добавим две строки:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js "></script>
<script type="text/javascript">jQuery.noConflict();</script>

Перед добавлением этих строк стоит убедиться, что библиотека jQuery ещё не подключена.
Теперь отредактируем файл /components/com_virtuemart/themes/default/templates/product_details/includes/addtocart_advanced_attribute.tpl.php. Ищем в файле следующий код (двенадцатая строка):

<option value=""><?php echo $options_item['base_value'] ?> (<?php echo $options_item['sign'].$options_item['display_price'] ?>)</option>

и меняем его на:

<option title="<?php echo $options_item['display_price'] ?>" value="<?php echo $options_item['base_var'] ?>"><?php echo $options_item['base_value'] ?></option>

Затем редактируем ещё один файл: /components/com_virtuemart/themes/default/templates/common/price.tpl.php
Ищем следующую строку:

<?php
if( !empty( $price_info["product_price_id"] )) { ?>


И добавляем прямо после неё следующий код:

<script type="text/javascript">
jQuery(document).ready(function(){
jQuery(".inputboxattrib").change(function () {
jQuery('span.productPrice').replaceWith('<span class="productPrice">'+jQuery(".inputboxattrib option:selected").attr("title")+'</span>');
})  
});
</script>

Обратите внимание на .inputboxattrib. Это стандартный класс Virtuemart для выпадающего списка свойства товара. Если в вашем магазине используется другой класс, то вставьте его название в код.
На этом всё. Пример можно посмотреть в интернет-магазине «Все штучки».

Не забывайте, что у нас вы можете не только купить готовый сайт, но и подобрать подходящий тариф поддержки сайта, а так же зарегистрировать домен в одной из двухсот доменных зон и выбрать недорогой тариф хостинга! У нас же вы можете заказать продвижение сайта в поисковых системах.Айтишник РУ

Об авторе:

ZolkinМеня зовут Андрей Золкин. Из более, чем пятнадцати лет работы в сфере информационных технологий, десять лет работаю с системами, базирующимися на открытом исходном коде. На страницах сайта Aitishnik.Ru веду блоги по CMC Joomla и Debian GNU/Linux.

 

Ещё статьи о Joomla 2.5