Перейти к содержимому


Фото
- - - - -

Массово положить товар в корзину


Best Answer phukortsin , 10.10.2019 - 08:56

Пробуйте в "foreach для вариантов" убрать одно слово "else". Перейти к посту


  • Чтобы отвечать, сперва войдите на форум
8 ответов в теме

#1 megauser

megauser
  • Пользователь
  • 79 сообщений
  • Дизайн, Заказчик, Пользователь
  • Откуда:Россия

Опубликовано 09.10.2019 - 12:43

Вопрос такого плана, как сделать чтоб товар можно было массово положить в корзину, 

 

Например на странице одного товара мы имеем 3 (связанных товара)

У этих связанных товаров убираем изображение ( оставляя только имя и чекбокс с вариантом или вариантами)

 

Далее в товаре при нажатии на кнопку в корзину чтоб выделенные чекбоксы отправлялись как товары в корзину. 

 

Получается мне править два файла?

ajax/cart.php

и ajax_cart.js?

 

Как собрать все товары?



#2 Noxter

Noxter
  • Забаненый
  • 1 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 09.10.2019 - 12:48

+ product.tpl, к примеру:
<input type="checkbox" name="variants[{$v->id}]" value="{$v->id}">
потом в js
var data = $(this).serialize();
и передать аяксом этот массив на обработку PHP.
P.S. А вообще ты сам вряд ли что сможешь сделать, от тебя толку никакого как и денег 0.

#3 phukortsin

phukortsin
  • Фрилансер
  • 946 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 09.10.2019 - 13:55

Получается мне править два файла?
ajax/cart.php
и ajax_cart.js?
 
Как собрать все товары?

Есть разные возможности.
Если постараться, то можно даже не особо большими изменениями в одном шаблоне product.tpl обойтись...

#4 megauser

megauser
  • Пользователь
  • 79 сообщений
  • Дизайн, Заказчик, Пользователь
  • Откуда:Россия

Опубликовано 09.10.2019 - 14:02

+ product.tpl, к примеру:

<input type="checkbox" name="variants[{$v->id}]" value="{$v->id}">
потом в js
var data = $(this).serialize();
и передать аяксом этот массив на обработку PHP.
P.S. А вообще ты сам вряд ли что сможешь сделать, от тебя толку никакого как и денег 0.

 

:)  эх, последнее дело чужие деньги считать. Тут форум вроде помощи или биржа? В вашем сообщении прям требование заплатить.

Напоминает бомбил у нас в Шереметьево. (Тоже на жизнь обиженные)



#5 megauser

megauser
  • Пользователь
  • 79 сообщений
  • Дизайн, Заказчик, Пользователь
  • Откуда:Россия

Опубликовано 09.10.2019 - 14:52

Есть разные возможности.
Если постараться, то можно даже не особо большими изменениями в одном шаблоне product.tpl обойтись...

 

Получается сделал так в связанных товарах вывел чекбокс 

 

в product.tpl (обернул все в form class"variants")

 

{if $related_products}

<div class="checkbox_products">
	{foreach $related_products as $related_product}
	<!-- Товар-->
	<div class="product_checkbox">
		
		<!-- Название товара -->
		<div>{$related_product->name|escape}</div>
		<!-- Название товара (The End) -->

		{if $related_product->variants|count > 0}
		<!-- Выбор варианта товара -->
     {foreach $related_product->variants as $v}
        <div class="variant">
                <input id="variants_{$v->id}" name="variants[{$v->id}]" value="1" type="checkbox" />
                {if $v->name}<label class="variant_name" for="variants_{$v->id}">{$v->name}</label>{/if}
                <span>{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
        </div>
        {/foreach}

		<!-- Выбор варианта товара (The End) -->
		{else}
			Нет в наличии
		{/if}


	</div>
	<!-- Товар (The End)-->
	{/foreach}
</div>
{/if}

 

Далее в ajax_cart.js

 

добавил функцию

 

$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

в data

 

data: $(this).serializeObject(),

Далее в ajax/ cart.php

 

foreach для вариантов

    if(is_array($simpla->request->get('variants'))) {
        $variants = $simpla->request->get('variants');
        foreach($variants as $s => $v) 
            $simpla->cart->add_item($s, $v);     
    }
    else	 
$simpla->cart->add_item($simpla->request->get('variant', 'integer'), $simpla->request->get('amount', 'integer'));

 

Теперь 2 товара в связанных отправляются все отлично, основной товар не отправляется.

Прошу помощи, не понял как организовать работу ajax_cart.js ( думаю там причина)



#6 megauser

megauser
  • Пользователь
  • 79 сообщений
  • Дизайн, Заказчик, Пользователь
  • Откуда:Россия

Опубликовано 10.10.2019 - 03:36

Если кто поможет разобраться , 

 

Основной товар у меня идет radiobutton , а связанные через чекбокс, добавляются либо один товар который основной , а если выбираю чекбоксы то товары добавляются корректно, но без основного товара.



#7 Noxter

Noxter
  • Забаненый
  • 1 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 10.10.2019 - 08:37

4cb6c4074b99096c8fc93251a336a52a4987e056

Изменено: Noxter, 10.10.2019 - 08:37


#8 phukortsin

phukortsin
  • Фрилансер
  • 946 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 10.10.2019 - 08:56   Best Answer

Пробуйте в "foreach для вариантов" убрать одно слово "else".

#9 megauser

megauser
  • Пользователь
  • 79 сообщений
  • Дизайн, Заказчик, Пользователь
  • Откуда:Россия

Опубликовано 10.10.2019 - 12:13

Пробуйте в "foreach для вариантов" убрать одно слово "else".

 

Благодарю!






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых