0 Пользователей и 1 Гость просматривают эту тему.
  • 19 Ответов
  • 2391 Просмотров
*

st_jimmy96

  • Осваиваюсь на форуме
  • 47
  • 5 / 0
Больше года я не пользовался ВиртуМартом и тут приспичило. Какой все-даки он ущербный... Ну да ладно не об этом.
Меня всегда напрягал способ изменения количества товара, при оформлении, в корзине. Это ж как не удобно надо сначала ввести количество, а потом кнопку жать.
Решил проблему по своему:
идем в components\com_virtuemart\views\cart\tmpl\default_pricelist.php
Ищем там:
Код
<input type="text"
   onblur="Virtuemart.checkQuantity(this,<?php echo $step?>,'<?php echo vmText::_ ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED')?>');"
   onclick="Virtuemart.checkQuantity(this,<?php echo $step?>,'<?php echo vmText::_ ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED')?>');"
   onchange="Virtuemart.checkQuantity(this,<?php echo $step?>,'<?php echo vmText::_ ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED')?>');"
   onsubmit="Virtuemart.checkQuantity(this,<?php echo $step?>,'<?php echo vmText::_ ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED')?>');"
   title="<?php echo  vmText::_('COM_VIRTUEMART_CART_UPDATE')?>" class="quantity-input js-recalculate" size="3" maxlength="4" name="quantity[<?php echo $pkey; ?>]" value="<?php echo $prow->quantity ?>" />
Дописываем перед ним: <span class="plusminus"><a class="prplus">+</a>
после него: <a class="prminus">-</a>
И после кнопок:
<button type="submit" class="vmicon vm2-add_quantity_cart" name="updatecart.<?php echo $pkey ?>" title="<?php echo  vmText::_ ('COM_VIRTUEMART_CART_UPDATE')?>" />
<button type="submit" class="vmicon vm2-remove_from_cart" name="delete.<?php echo $pkey ?>" title="<?php echo vmText::_ ('COM_VIRTUEMART_CART_DELETE')?>" />
Закрываем наш спан: </span>
Далее в удобном месте шаблона прописываем код:
Код
	$(function(){
$('a.prminus').click(function() {
var $input = $(this).parent(this).children("input");
var count = parseInt($input.val()) - 1;
$(this).parent(this).children("input").val(count);
$(this).parent(this).children(".vm2-add_quantity_cart").click();
});
$('a.prplus').click(function() {
var $input = $(this).parent(this).children("input");
var count = parseInt($input.val()) + 1;
$(this).parent(this).children("input").val(count);
$(this).parent(this).children(".vm2-add_quantity_cart").click();
});
});
CSSом допиливаем по своему усмотрению.
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Так вы при нажатии на "-" загоните значение количества в "меньше нуля". Дописать проверку на ноль надо.
И вы же переменной присвоили значение - "какой-то инпут". Используйте переменную, зачем еще раз тот же элемент искать в DOM?
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

st_jimmy96

  • Осваиваюсь на форуме
  • 47
  • 5 / 0
Действительно скрипт можно поправить. На счет проверки на ноль - нет необходимости, при значении меньше 1, товар удаляется из корзины. :)
*

fsv

  • Moderator
  • 2765
  • 402 / 2
На счет проверки на ноль - нет необходимости, при значении меньше 1, товар удаляется из корзины.
Вот так юзер решит почпокать кнопочками, разгонится и промажет, товар удалится, ему расстройство и закрытие вкладки вашего сайта, вам не полученная прибыль. Проверка на ">=1", удаляет (если захочет) кнопкой.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Далее в удобном месте шаблона прописываем код:
Код
	$(function(){
$('a.prminus').click(function() {
var $input = $(this).parent(this).children("input");
var count = parseInt($input.val()) - 1;
$(this).parent(this).children("input").val(count);
$(this).parent(this).children(".vm2-add_quantity_cart").click();
});
$('a.prplus').click(function() {
var $input = $(this).parent(this).children("input");
var count = parseInt($input.val()) + 1;
$(this).parent(this).children("input").val(count);
$(this).parent(this).children(".vm2-add_quantity_cart").click();
});
});
CSSом допиливаем по своему усмотрению.

Подскажите пож-та. где именно надо прописывать.
Вписал после span - не работает.
*

st_jimmy96

  • Осваиваюсь на форуме
  • 47
  • 5 / 0
Перед кодом напишите <script> а после </script> и будет счастье
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
сделал. и ничего не работает
*

st_jimmy96

  • Осваиваюсь на форуме
  • 47
  • 5 / 0
Вставлять скрипт нужно перед <span>
Попробуйте вставить в шапку (<head></head>). Проверьте подключен ли у Вас jquery
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Вставлять скрипт нужно перед <span>
Попробуйте вставить в шапку (<head></head>). Проверьте подключен ли у Вас jquery
прописал в head. jquery прописал.
udodobno.ru - вот тут на сайте посмотрите пож-та.
*

st_jimmy96

  • Осваиваюсь на форуме
  • 47
  • 5 / 0
Все дело в том, что Вы вставили код ДО подключения JQuery. Переместите кусок кода в конец поля head
*

st_jimmy96

  • Осваиваюсь на форуме
  • 47
  • 5 / 0
Должен заметить, этот скрипт может менять количество товара на 1 единицу. К примеру у Вас задан шаг 500шт.. Я бы переделал это таким образом:
заказ 1 упаковка = 500шт. Минимальный заказ 4 упаковки.
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Все дело в том, что Вы вставили код ДО подключения JQuery. Переместите кусок кода в конец поля head
Поставил. и ничего не изменилось.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Поставил. и ничего не изменилось.
Не удивительно, у вас же другой шаблон.
Код: javascript
$(function(){
$('.quantity-plus,.quantity-minus').on('click',function() {
var
signs={'quantity-plus':1,'quantity-minus':-1},
            el=$(this).parent().prev().find('.quantity-input'),
            step=el.attr('step') || 1,
cls=$(this).attr('class'),
cl=cls.substring(cls.indexOf(' ')).trim(),
val=parseInt(el.val())+signs[cl]*step
;
val=val<step?step:val;
el.val(val);
});
});
http://jsfiddle.net/n_robert/uyqh8j9a
st_jimmy96, что за "parent(this)"?
« Последнее редактирование: 29.10.2015, 13:44:57 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Не удивительно, у вас же другой шаблон.
Код: javascript
$(function(){
$('.quantity-plus,.quantity-minus').on('click',function() {
var
signs={'quantity-plus':1,'quantity-minus':-1},
el=$(this).parent().prev().find('.quantity-input'),
cls=$(this).attr('class'),
cl=cls.substring(cls.indexOf(' ')).trim(),
val=parseInt(el.val())+signs[cl]
;
val=val<0?0:val;
el.val(val);
});
});
http://jsfiddle.net/n_robert/uyqh8j9a
st_jimmy96, что за "parent(this)"?

Все прописал опять же. И не работают кнопки. Может потому что в вашем случае шаг в 1 ед товара. а у меня настроены другие?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Добавил учет шага.
Мой пример взят из вашего кода, и он работает.
Попробуйте заменить "$" на "jQuery".

P.S. Только сейчас заметил: у вас и так уже все работает, зачем еще что-то менять?
« Последнее редактирование: 29.10.2015, 13:42:40 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Добавил учет шага.
Мой пример взят из вашего кода, и он работает.
Попробуйте заменить "$" на "jQuery".

P.S. Только сейчас заметил: у вас и так уже все работает, зачем еще что-то менять?

Вы в корзине это смотрите ?
Потому что у меня не работает
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Вы в корзине это смотрите ?
Нет, не в корзине :(.
Исправил:
Код: javascript
$(function(){
$('.quantity-plus,.quantity-minus').on('click',function() {
var
signs={'quantity-plus':1,'quantity-minus':-1},
el=$(this).parent().prev('.quantity-input'),
step=parseInt(el.attr('onblur').replace(/[^\d]/g,'')) || 1,
cls=$(this).attr('class'),
cl=cls.substring(cls.indexOf(' ')).trim(),
val=parseInt(el.val())+signs[cl]*step
;
val=val<step?step:val;
el.val(val);
$(this).parent().nextAll('span').filter('.vm2-add_quantity_cart').first().click();
});
});
« Последнее редактирование: 29.10.2015, 15:19:16 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Нет, не в корзине :(.
Исправил:
Код: javascript
$(function(){
$('.quantity-plus,.quantity-minus').on('click',function() {
var
signs={'quantity-plus':1,'quantity-minus':-1},
el=$(this).parent().prev('.quantity-input'),
step=parseInt(el.attr('onblur').replace(/[^\d]/g,'')) || 1,
cls=$(this).attr('class'),
cl=cls.substring(cls.indexOf(' ')).trim(),
val=parseInt(el.val())+signs[cl]*step
;
val=val<step?step:val;
el.val(val);
$('#checkoutForm').submit();
});
});

а проблема как раз с изменением количества в корзине)
этот скрипт прописал. и не работает (
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Чуть-чуть изменил последнюю строку.
Пример работает, у вас, видимо конфликт скриптов.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Чуть-чуть изменил последнюю строку.
Пример работает, у вас, видимо конфликт скриптов.

не могли бы вы посмотреть на сайте в чем проблема? плз. можно по скапу связаться с вами. за оплату допилить эту мелочь?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не открываются некоторые карточки товаров

Автор Vatag

Ответов: 5
Просмотров: 2335
Последний ответ 04.12.2022, 13:26:04
от Evgen Kulibin
Вывод всех товаров на Главную

Автор Akeksandr

Ответов: 1
Просмотров: 1166
Последний ответ 28.12.2021, 14:48:23
от Akeksandr
Вывод модуля рекомендуемых товаров

Автор sergspb

Ответов: 0
Просмотров: 1283
Последний ответ 06.11.2020, 09:59:01
от sergspb
Как убрать показ дополнительного изображения в категории товаров?

Автор ElenaNova

Ответов: 0
Просмотров: 1448
Последний ответ 22.04.2020, 13:13:27
от ElenaNova
Вывод краткого описания товара в корзине

Автор PavelK

Ответов: 2
Просмотров: 1631
Последний ответ 04.04.2020, 16:34:10
от PavelK