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

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Одна кнопка купить
« : 02.09.2013, 12:02:03 »
всем привет.
у меня такой вопрос, как возможно сделать одну кнопку купить на группу товаров, при этом в корзине это все отдельные товары
например как здесь на вкладке погонажные изделия http://www.za-door.ru/catalog/Zadoor/d3/18154/
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #1 : 02.09.2013, 17:27:28 »
нашел тут одну тему, но там для старого vm,
http://takprostotak.ru/joomla/virtuemart/kak-dobavit-neskolko-tovarov-v-korzinu-virtuemart.html/comment-page-1

массив выбранных товаров я собрал, как его теперь передать в корзину?
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #2 : 03.09.2013, 11:59:05 »
Может Кто сможет объяснить принцип добавления товара в корзину по клику на кнопку?
можно на одном товаре.
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
Re: Одна кнопка купить
« Ответ #3 : 03.09.2013, 12:21:29 »
Смотрите components\com_virtuemart\views\productdetails\tmpl\default_addtocart.php
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #4 : 03.09.2013, 12:25:29 »
Смотрите components\com_virtuemart\views\productdetails\tmpl\default_addtocart.php
это шаблон.
где сама функция обработки этого клика?
 в action формы написано /index.php?option=com_virtuemart
здесь как то через AJAX все делается, страница ведь не перезагружается
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
Re: Одна кнопка купить
« Ответ #5 : 03.09.2013, 13:38:14 »
это шаблон.
где сама функция обработки этого клика?
 в action формы написано /index.php?option=com_virtuemart
здесь как то через AJAX все делается, страница ведь не перезагружается
Конечно, это шаблон.
С формой, в которой есть inputs с разными переменными, которые передаются дальше...
По последнему посту создается мнение, что вы можете "дальше..." проследить цепочку.
А AJAX - всего лишь фишка, которая без перезагрузки страницы обновляет модуль корзины с помощью этих данных.
« Последнее редактирование: 03.09.2013, 13:43:05 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #6 : 03.09.2013, 13:47:27 »
Цепочка меня привела в /components/com_virtuemart/assets/js/vmprices.js
нашел addtocart = cart.find('input.addtocart-button')
и теперь я в замешательстве....чего то здесь всего много
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
Re: Одна кнопка купить
« Ответ #7 : 03.09.2013, 13:57:46 »
Ну почему же...
Видим "option=com_virtuemart", "view=cart", "task=add" и "virtuemart_product_id[]".
Значит, данные передаются в "index.php?option=option=com_virtuemart&view=cart&task=add&virtuemart_product_id[]=xxx".
Открываем view/cart/view.html.php, видим:
Код
if (!class_exists('VirtueMartCart'))
require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php');
$cart = VirtueMartCart::getCart();
Ну а дальше сами найдете.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #8 : 03.09.2013, 14:53:29 »
От части получилось. Моя функция с использованием jQuery.post на странице товара выполняется кучу раз пока не перезагружу страницу.
Например передал один товар и в другой вкладке открыл корзину, там его кол-во увеличивается с каждым обновлением страницы, это не прекращается пока не обновлю страницу с товарами.

почему она не останавливается
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
Re: Одна кнопка купить
« Ответ #9 : 03.09.2013, 15:33:59 »
Вы сами ответили на свой вопрос.
Что случилось, когда вы обновили страницу с товарами? Очевидно, обнулились переменные, передаваемые в корзину.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #10 : 03.09.2013, 16:48:57 »
http://portabene.ru/index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=2&virtuemart_category_id=1
http://portabene.ru/index.php?option=com_virtuemart&view=cart
Почему то не все передается в корзину, например при выборе всех трех, передадутся только первые два.
При выборе только последнего, передадутся второй и третий, хотя alert срабатывает. точнее здесь проблема в кэше, если его почистить то добавится только третий
для теста нажимать на кнопку все в корзину

имею след скирпт,
Код
<script type="text/javascript">
jQuery(document).ready(function() {

$('.mama').click(function(){
var i = $('.pogon .quantity-input').length;
var arr = new Array();
t=0;
for(k=0;k<i;k++){
//собираю id товаров у которых указано кол-во больше 0
var val=parseInt($('.pogon .quantity-input').eq(k).val()); //кол-во

if(val>0){
t=$('.pogon .quantity-input').eq(k).attr('id'); // id товара
                                alert("id "+t);
_post(t,val,0); //вызов функции, 0 передал что бы один раз вызывалась
}
}

});

});

function _post(id,n,i){
            jQuery.post(
              "index.php?option=option=com_virtuemart&view=cart&task=add&virtuemart_product_id[]="+id,
              {
page: "cart",
flypage: 'default.php',
'quantity[]': n,
task: "add",
option: "com_virtuemart",
product_id: id,
                                'prod_id[]': id                
                
              }, function(){ i++; if (1>i) _post(id, n, i); }
              );
};  
</script>
« Последнее редактирование: 03.09.2013, 17:02:17 от stydent »
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
Re: Одна кнопка купить
« Ответ #11 : 03.09.2013, 17:41:16 »
Все работает.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #12 : 03.09.2013, 22:13:24 »
сейчас дома попробовал выбрать все три позиции, добавилось только две первые.
Но добавляются все три если страницу с товарами перезагрузить

Если выбрать первые два, добавится только первый
Что то не так происходит
« Последнее редактирование: 03.09.2013, 22:18:07 от stydent »
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #13 : 04.09.2013, 10:37:59 »
Цитировать
robert
есть какие предположения почему так работает?
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
Re: Одна кнопка купить
« Ответ #14 : 04.09.2013, 10:50:14 »
Повторяю, у меня работает без ошибок.

P.S. Да, начались сбои. Попробуйте поставить alert в конце после _post для проверки. Еще, может быть, просто обнулить val вместо передачи 0?
« Последнее редактирование: 04.09.2013, 11:20:43 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #15 : 04.09.2013, 13:02:56 »
написал val=0 и все заработало, спасибо.
еще я откинул кусок вызова, поскольку он не нужен, ведь вызов идет из цикла
 
Код
, function(){ i++; if (1>i) _post(id, n, i); }
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #16 : 05.09.2013, 14:44:31 »
Чего то я рано радовался. (((
Добавил я несколько больше товаров, и теперь в корзину попадают только 6 первых выбранных, остальные не доходят
Есть ли какие ограничения на $.post
http://portabene.ru/index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=2&virtuemart_category_id=1


и еще если убрать alert, то код собственно неработоспособен, добавляется только один товар
« Последнее редактирование: 05.09.2013, 15:42:37 от stydent »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Одна кнопка купить
« Ответ #17 : 05.09.2013, 16:11:56 »
Подозреваю что причина в асинхронности AJAX запросов попробуйте вместо $.post() использовать $.ajax() с ключом async:false
интернет-блог: http://websiteprog.ru
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #18 : 05.09.2013, 16:41:34 »
Подозреваю что причина в асинхронности AJAX запросов попробуйте вместо $.post() использовать $.ajax() с ключом async:false
можешь подсказать как функцию  $.ajax() правильно расписать
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Одна кнопка купить
« Ответ #19 : 05.09.2013, 17:07:55 »
попробуйте $.ajaxSetup({async:false}); перед вашим $.post запросом поставить, вроде должно работать но я не проверял а вобще синтаксис примерно такой:
Код
$.ajax({
  url: url,
  type: "POST",
  data: data,
  success: function() {...},
  async: false
});

Замените URL вашим урлом и функции на sucess допишите, все по анологии
интернет-блог: http://websiteprog.ru
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #20 : 05.09.2013, 17:14:19 »
$.ajaxSetup({async:false}); помог мне.
Страница правда становится не доступной какой то время, хотя в документации сказано что только при синхронных браузер блокируется
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Одна кнопка купить
« Ответ #21 : 05.09.2013, 17:24:33 »
Вобще эту опцию не рекомендуются включать, потому как браузер действительно полностью блокирует все ивенты на странице. Но можно как то использовать переменные, чтобы выполнять проверку, отработался ли предыдущий запрос. Как то я это делал но если честно уже не помню..
интернет-блог: http://websiteprog.ru
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #22 : 05.09.2013, 17:28:50 »
я начал через AJAX делать, но у меня он не получился, не разобрался как ее составить
а ошибку 404 выдает в консоли браузера.

Код
function a_post(id,n){
jQuery.ajax({
   url: "index.php?option=option=com_virtuemart&view=cart&task=add&virtuemart_product_id[]="+id,
   type: "POST",
   async:false,
   data: 'prod_id[]='+id+'&quantity[]='+n
   
 });
 }
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Одна кнопка купить
« Ответ #23 : 05.09.2013, 17:41:49 »
если у вас $.ajaxSetup({async:false}); отрабатывает то вам достаточно использовать jQuery.post() метод. По сути это тот же самый jQuery.ajax(),
только с предустановленными параметрами( данные передеются POST методом например).

Если вас не устраивает подвисания браузера во время выполнения запроса, то вам надо использовать вместо async: false проверочные значения
Можно попробовать использовать глобальную переменную которую после обработчика метода sucess устанавливать в true, а перед новым запросом выполнять проверку этой переменной (возможно с переодическим таймаутом) и потом делать ее false. тут надо эксперементировать кончено, но что то подобное мне уже приходилось делать.
интернет-блог: http://websiteprog.ru
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Кнопка типа "Добавить товар в избранное" или "Понравившийся товар" для VirtueMart

Автор Igoritaly

Ответов: 0
Просмотров: 977
Последний ответ 05.01.2017, 11:11:34
от Igoritaly
Custom Fields и купить в категории

Автор andpuxa

Ответов: 3
Просмотров: 501
Последний ответ 08.08.2016, 12:24:00
от andpuxa
РЕШЕНО: Перестала работать кнопка купить после добавления настраиваемых полей

Автор stylus83

Ответов: 0
Просмотров: 422
Последний ответ 21.01.2016, 21:52:57
от stylus83
Не работает кнопка "Купить " в карточке товара

Автор Tatjana

Ответов: 9
Просмотров: 1108
Последний ответ 22.08.2015, 16:31:36
от bziondik
Одна цена за несколько штук

Автор Sepika

Ответов: 2
Просмотров: 569
Последний ответ 10.11.2014, 13:03:58
от Sepika