Jump to content

Кнопка покупки у каждого варианта


Recommended Posts

Всем привет!

Вопрос по 2.0.

Для проекта необходимо сделать вывод вариантов в виде таблицы, у каждого варианта будет своя фотка, и у каждого варианта должна быть кнопка "купить".

Подскажите, как сделать обработку корзины не формой, а ссылкой? Чтобы не связываться с формой и по-простому вывести из базы варианты и кнопки "купить" к ним. Я попробовал поработать с формой и сделать множественные submit-ы, но это не работает с ajax корзиной. Может не туда смотрел.

Link to post
Share on other sites

Я бы для каждого варианта сделал свою форму, и естественно, Джаваскрипт-файл аякс-корзины тоже надо будет поправить. Могу сделать недорого. Сложного ничего нет.

Link to post
Share on other sites
  • 3 years later...

Я бы для каждого варианта сделал свою форму, и естественно, Джаваскрипт-файл аякс-корзины тоже надо будет поправить. Могу сделать недорого. Сложного ничего нет.

а может поделитесь если это не сложно?

Link to post
Share on other sites

а может поделитесь если это не сложно?

Я делал вот так:
{if $product->variants|count > 0}
<!-- Выбор варианта товара -->
{foreach $product->variants as $v}
<form class="variants" action="/cart">
	<table class="var">
		<tr class="variant">
			<td>
				<input type="hidden" name="variant" value="{$v->id}">
			</td>
			<td class="variant_name">
				{if $v->name}
				<label for="variants_{$v->id}">
					{$v->name}
				</label>
				{/if}
			</td>
			<td class="price">
				{if $v->compare_price > 0}
				<label class="compare_price">
					{$v->compare_price|convert}
				</label>
				{/if}
				<label>{$v->price|convert} {$currency->sign|escape}</label>
			</td>
			<td>
				<input type="submit" class="add2cart" value="Купить" data-result-text="Добавил"/>
			</td>
		</tr>
	</table>
</form>
{/foreach}
<!-- Выбор варианта товара (The End) -->
{else}
	Нет в наличии
{/if}
При чем больше ничего переделывать не нужно.
Link to post
Share on other sites

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

{if $product->variants|count > 0}
<table>
{foreach $product->variants as $v}
<tr>
<td>{$v->name}</td>
<td>{$v->price|convert} {$currency->sign|escape}</td>
<td><input id="am_{$v->id}" name="am[{$v->id}]" value="1" class="inputNumber"></td>
<td><a href="#" class="addToCart" data-id="{$v->id}">добавить в корзину</a></td>
</tr>
{/foreach}
{else}
    Нет в наличии
{/if}

и меняем скрипт аякс корзины ajax_cart.js на

    $('.addToCart').on('click', function(e) {
        e.preventDefault();
 
        var product = {
            vt: $(this).data('id'),
            am: $(this).closest('tr').find('.inputNumber').val(),
        };
        $.ajax({
            url: "ajax/cart.php",
            data: product,
            dataType: 'json',
            success: function(data){
                $('#cart_informer').html(data);
            }
        });
        return false;
    });
Link to post
Share on other sites

mishanya, если уж пишете такие изменения в коде, что меняете передаваемые переменные в ajax_cart.js, то надо и изменение кода для их обработки в ajax/cart.php тоже приводить.

 

А вообще непонятно, зачем Вы усложняете и не используете стандартные названия переменных...

Edited by Kors
Link to post
Share on other sites

mishanya, если уж пишете такие изменения в коде, что меняете передаваемые переменные в ajax_cart.js, то надо и изменение кода для их обработки в ajax/cart.php тоже приводить.

 

А вообще непонятно, зачем Вы усложняете и не используете стандартные названия переменных...

согласен, затупил чуток), вот вариант, в котором не надо менять ajax/cart.php:

    $('.addToCart').on('click', function(e) {
        e.preventDefault();

        $.ajax({variant: $(this).data('id'), amount:$(this).closest('tr').find('.inputNumber').val()},
            url: "ajax/cart.php",
            data: product,
            dataType: 'json',
            success: function(data){
                $('#cart_informer').html(data);
            }
        });
        return false;
    });
Edited by mishanya
Link to post
Share on other sites

 

согласен, затупил чуток), вот вариант, в котором не надо менять ajax/cart.php:

    $('.addToCart').on('click', function(e) {
        e.preventDefault();

        $.ajax({variant: $(this).data('id'), amount:$(this).closest('tr').find('.inputNumber').val()},
            url: "ajax/cart.php",
            data: product,
            dataType: 'json',
            success: function(data){
                $('#cart_informer').html(data);
            }
        });
        return false;
    });

Не получается что-то сделать, может где то ошибся

Делаю так:

1. Создал отдельно файл desing/moi_desing/ыeсtion_cart.js внес код, который чуть выше

2. в шаблоне карточки вставил вот такой код:

 

{if $product->variants|count > 0}
<table>
{foreach $product->variants as $v}
<tr>
<td>{$v->name}</td>
<td>{$v->price|convert} {$currency->sign|escape}</td>
<td style="display:none;"><input id="am_{$v->id}" name="am[{$v->id}]" value="1" class="inputNumber"></td>
<td><a href="#" class="addToCart" data-id="{$v->id}">добавить в корзину</a></td>
</tr>
{/foreach}
</table>
{else}
    Нет в наличии
{/if}

 

столбцу с количеством товара, выставил none, так как не нужно.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...