Virtuemart - изменение цены в зависимости от свойства товара
Многие владельцы интернет магазинов на Virtuemart 1.1.x сталкивались со следующей задачей: есть варианты одного и того же товара, которые отличаются друг от друга только каким-нибудь свойством, например, размером, фасовкой, массой, цветом, запахом, формой и т. д. При этом цены для разных вариантов могут различаться. И это естественно – не может же пятисотграммовая упаковка чая стоить столько же, сколько стограммовая упаковка точно такого же чая!
Как же пытаются решить эту задачу? Те, кто совсем не хочет вникать в Virtuemart, просто вводят несколько товаров. Отдельно вводится товар «Пачка чая 100 г», отдельно товар «Пачка чая 200 г» и т. д. Более продвинутые администраторы заводят для товара свойство, например «масса», к которому добавляют несколько особенностей, например, «100 г» или «200 г» и т. д. Для каждой из особенностей стандартными средствами Virtuemart устанавливаются цены вида: +100 или -12. В результате этого в карточке товара «Чай» появляется раскрывающийся список «Масса», в котором покупатель может выбрать упаковку нужной ему массы. Но у этого способа есть ряд недостатков. Выбор упаковки другой массы не меняет цену в карточке товара, а покупатель видит лишь разницу в цене. Покупателю это не удобно – он хочет сразу видеть цену за приобретаемый товар, а не высчитывать её. К тому же вид «+100» или «-12» на мой взгляд не добавляет презентабельности. Администратору же магазина тоже приходится каждый раз пересчитывать разницу при изменении цены товара.
Как сказал один исторический персонаж: «Мы пойдём другим путём!». В этой статье я опишу, как в Virtuemart1.1.x сделать автоматическое изменение цены в зависимости от выбранного свойства товара. В качестве примера возьму свечной гель.
Магазин предлагает свечной гель в разной фасовке: 400 г за 200 руб. и 800 г. за 400 руб. В свойствах товара устанавливаем цену за минимальную фасовку 200 руб.
На вкладке «Статус товара» вводим новое свойство «Фасовка». Для нового свойства вводим две особенности: 400 г и 800 г. Выставляем соответствующие цены (со знаком равенства) для каждой особенности и сохраняем изменения.
Теперь правим код. Сначала в индексном файле шаблона сайта /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 для выпадающего списка свойства товара. Если в вашем магазине используется другой класс, то вставьте его название в код.
На этом всё. Пример можно посмотреть в интернет-магазине «Все штучки».
Помните, что у нас вы можете не только купить готовый сайт или заказать его разработку, но и подобрать подходящий тариф поддержки сайта, заказать продвижение сайта в поисковых системах, а так же зарегистрировать домен в одной из двухсот доменных зон и выбрать недорогой тариф хостинга! Айтишник РУ
Об авторе:
Меня зовут Андрей Золкин. Из более, чем пятнадцати лет работы в сфере информационных технологий, десять лет работаю с системами, базирующимися на открытом исходном коде. На страницах сайта Aitishnik.Ru веду блоги по CMC Joomla и Debian GNU/Linux.
Ещё статьи о Joomla 2.5
-
Вставка и подсветка кода в Joomla 2.5
В одной из предыдущих статей («Текстовые редакторы в Joomla») я вкратце описывал использование текстовых редакторов. Возможности этих редакторов на 99% покрывают потребности пользователей Joomla. Но иногда их возможностей не хватает или лучше воспользоваться специальными расширениями. Допустим, что в статью нужно вставить код одного из конфигурационных файлов...
Общие настройки сайта на Joomla
После установки Joomla, настройки резервного копирования, а так же знакомства с восстановлением сайта, займёмся общими настройками. В панели управления сайта кликнем на кнопке быстрого доступа «Общие настройки». Общие настройки можно ещё открыть посредством меню: Сайт -> Общие настройки. В панели общих...
Карта сайта в Joomla 2.5
В этой статье мы поговорим о карте сайта, а точнее о том, как создать карту сайта на Joomla в форматах HTML и XML. Карта сайта в формате HTML представляет собой страницу со ссылками на материалы сайта. Она помогает посетителям...
Joomla авторизация через соц. сети
В последнее время стало «модно» предоставлять посетителям сайта возможность регистрации и авторизации, используя свои учетные записи в социальных сетях. В этом есть определенная логика - не каждый хочет проходить регистрацию на сайте. По...
Текстовые редакторы в Joomla
Большую часть работы с CMS Joomla занимает работа с текстом. И чтобы эта работа была более комфортной, хорошо бы подобрать себе инструмент по вкусу. В этой статье мы познакомимся с текстовыми редакторами, которые наиболее часто...
Общие настройки сайта на Joomla. Система...
В левой части вкладки «Система» общих настроек сайта на Joomla находится группа настроек, которая называется «Настройка системы». Поле ввода «Путь к каталогу логов» содержит путь к журналам Joomla. Обращаем внимание на запись пути! Так...