Перейти к содержанию
Официальный форум поддержки Simpla

Количество товара перед помещением в корзину


Рекомендуемые сообщения

Здравствуйте, помогите Simpla 2.2.4 добавляется 1 шт. все по инструкции код заменен в ajax-cart.js , в product.tpl выпадающий список вставил перед ценой. В product.tpl изменен вывод вариантов товара на выпадающий список

Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, помогите Simpla 2.2.4 добавляется 1 шт. все по инструкции код заменен в ajax-cart.js , в product.tpl выпадающий список вставил перед ценой. В product.tpl изменен вывод вариантов товара на выпадающий список

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

Ссылка на сообщение
Поделиться на другие сайты

Вставил так:

 

<h4>Размер:</h4>
        <form class="variants" action="/cart">
            
<select name="variant" {if $product->variants|count==1  && !$product->variant->name}style='display:none;'{/if}>
                {foreach $product->variants as $v}
                <option value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}">
                {$v->name}
                </option>
                {/foreach}
                         </select></p>
<h4>Количество:</h4><select name="amount" class="amounts">
{section name=amounts start=1 loop=$product->variant->stock+1 step=1}
<option value="{$smarty.section.amounts.index}" {if $product->amount==$smarty.section.amounts.index}selected{/if}>{$smarty.section.amounts.index} {$settings->units}</option>
{/section}
</select></p>
            <div class="price">
<h4>Цена</h4>
                <strike>
                {if $product->variant->compare_price > 0}
                {$product->variant->compare_price|convert}
                {/if}
                </strike>
                <span>{$product->variant->price|convert}</span>
                <i>{$currency->sign|escape}</i>
                         </div></p>




 <input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
        </form>    
 

 

Ссылка на сообщение
Поделиться на другие сайты
<h4>Размер:</h4>
        <form class="variants" action="/cart">
            
</p>
<h4>Количество:</h4></p>
            <div class="price">
<h4>Цена</h4>
<select name="variants" {if $product->variants|count==1  && !$product->variant->name}style='display:none;'{/if}>
                {foreach $product->variants as $v}
                <option value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}">
                {$v->name}
                </option>
                {/foreach}
                         </select>
<strike> {if $product->variant->compare_price > 0} {$product->variant->compare_price|convert} {/if} </strike> <span>{$product->variant->price|convert}</span> <i>{$currency->sign|escape}</i> </div></p> 
<input type="submit" class="button" value="в корзину" data-result-text="добавлено"/> </form>

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

Ссылка на сообщение
Поделиться на другие сайты

Извините, все равно не понял, можете вставить куда нужно?

{* Страница товара *}

<!-- Хлебные крошки /-->
<div id="path" xmlns:v="http://rdf.data-vocabulary.org/#">
<span typeof="v:Breadcrumb">
<a href="/" rel="v:url" property="v:title">Главная</a>
</span>
{foreach from=$category->path item=cat}
? <span typeof="v:Breadcrumb"><a href="catalog/{$cat->url}" rel="v:url" property="v:title">{$cat->name|escape}</a></span>
{/foreach}
{if $brand}
? <span typeof="v:Breadcrumb"><a href="catalog/{$cat->url}/{$brand->url}" rel="v:url" property="v:title">{$brand->name|escape}</a></span>
{/if}
? {$product->name|escape}
</div>
<!-- Хлебные крошки #End /-->

<h1 data-product="{$product->id}">{$product->name|escape}</h1>
<span itemscope itemtype="http://data-vocabula...iew-aggregate">
<div class="rating" rel="{$product->id}">
    <span class="rater-starsOff"><span style="width:{$product->rating*80/5|string_format:"%.0f"}px" class="rater-starsOn"></span></span> <span class="rater-rating" itemprop="rating">{$product->rating|string_format:"%.1f"}</span> (<span class="rater-rateCount" itemprop="count">{$product->votes|string_format:"%.0f"}</span> {$product->votes|plural:'голос':'голосов':'голоса'})
</div>
</span>

<div class="product">

	<!-- Большое фото -->
	{if $product->image}
	<div class="image">
		<a href="{$product->image->filename|resize:800:600:w}" class="zoom" data-rel="group"><img src="{$product->image->filename|resize:300:300}" alt="{$product->product->name|escape}" /></a>
</div>
	{/if}
	<!-- Большое фото (The End)-->

 Артикул: {$product->variant->sku}</p>

		{if $product->variants|count > 0}
		<!-- Выбор варианта товара -->
<h4>Размер:</h4>
		<form class="variants" action="/cart">
			
<select name="variant" {if $product->variants|count==1  && !$product->variant->name}style='display:none;'{/if}>
				{foreach $product->variants as $v}
				<option value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}">
				{$v->name}
				</option>
				{/foreach}
                         </select></p>

			<div class="price">
<h4>Цена</h4>
				<strike>
				{if $product->variant->compare_price > 0}
				{$product->variant->compare_price|convert}
				{/if}
				</strike>
				<span>{$product->variant->price|convert}</span>
				<i>{$currency->sign|escape}</i>
                         </div></p>


 <input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
		</form>
			
		<!-- Выбор варианта товара (The End) -->
		{else}
			Нет в наличии
		{/if}
			
	
	<!-- Описание товара (The End)-->

	<!-- Дополнительные фото продукта -->
	{if $product->images|count>1}
	<div class="images">
		{* cut удаляет первую фотографию, если нужно начать 2-й - пишем cut:2 и тд *}
		{foreach $product->images|cut as $i=>$image}
			<a href="{$image->filename|resize:800:600:w}" class="zoom" data-rel="group"><img src="{$image->filename|resize:95:95}" alt="{$product->name|escape}" /></a>
		{/foreach}
	</div>
	{/if}
	<!-- Дополнительные фото продукта (The End)-->

	
	{if $product->features}
	<!-- Характеристики товара -->
	<h2>Характеристики</h2>
	<ul class="features">
	{foreach $product->features as $f}
	<li>
		<label>{$f->name}</label>
		<span>{$f->value}</span>
	</li>
	{/foreach}
	</ul>
	<!-- Характеристики товара (The End)-->
	{/if}

<!-- Описание товара -->
	<div class="description">
	
		{$product->body}
</div>

	<!-- Соседние товары /-->
	<div id="back_forward">
		{if $prev_product}
			? <a class="prev_page_link" href="products/{$prev_product->url}">{$prev_product->name|escape}</a>
		{/if}
		{if $next_product}
			<a class="next_page_link" href="products/{$next_product->url}">{$next_product->name|escape}</a> ?
		{/if}
	</div>
	
</div>
<!-- Описание товара (The End)-->

{* Связанные товары *}
{if $related_products}
<h2>Так же советуем посмотреть</h2>
<!-- Список каталога товаров-->
<ul class="tiny_products">
	{foreach $related_products as $product}
	<!-- Товар-->
	<li class="product">
		
		<!-- Фото товара -->
		{if $product->image}
		<div class="image">
			<a href="products/{$product->url}"><img src="{$product->image->filename|resize:200:200}" alt="{$product->name|escape}"/></a>
		</div>
		{/if}
		<!-- Фото товара (The End) -->

		<!-- Название товара -->
		<h3><a data-product="{$product->id}" href="products/{$product->url}">{$product->name|escape}</a></h3>
<div class="rating" rel="{$product->id}">
    <span class="rater-starsOff"><span style="width:{$product->rating*80/5|string_format:"%.0f"}px" class="rater-starsOn"></span></span> <span class="rater-rating">{$product->rating|string_format:"%.1f"}</span> (<span class="rater-rateCount">{$product->votes|string_format:"%.0f"}</span> {$product->votes|plural:'голос':'голосов':'голоса'})
</div>
		<!-- Название товара (The End) -->
                
		{if $product->variants|count > 0}
		<!-- Выбор варианта товара -->
<h4>Размер</h4>
		
			<form class="variants" action="/cart">
<select name="variant" {if $product->variants|count==1  && !$product->variant->name}style='display:none;'{/if}>
				{foreach $product->variants as $v}
				<option value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}">
				{$v->name}
				</option>
				{/foreach}
			</select>
			<div class="price">
<h4>Цена</h4>
				<strike>
				{if $product->variant->compare_price > 0}
				{$product->variant->compare_price|convert}
				{/if}
				</strike>
				<span>{$product->variant->price|convert}</span>
				<i>{$currency->sign|escape}</i>
			</div>
			<input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
		</form>
		<!-- Выбор варианта товара (The End) -->
		{else}
			Нет в наличии
		{/if}


	</li>
	<!-- Товар (The End)-->
	{/foreach}
</ul>
{/if}
{literal}
<script type="text/javascript" src="//yandex.st/share/share.js"
charset="utf-8"></script>
<div class="yashare-auto-init" data-yashareL10n="ru"
 data-yashareType="button" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,gplus"
 {/literal}
></div> 

<!-- Комментарии -->
<div id="comments">

	<h2>Комментарии</h2>
	{if $comments}
	<!-- Список с комментариями -->
	<ul class="comment_list">
		{foreach $comments as $comment}
		<a name="comment_{$comment->id}"></a>
		<li>
			<!-- Имя и дата комментария-->
{if $comment->visible}
			<div class="comment_header">
{if $comment->email}
                <img src="{gravatar email="{$comment->email}" size="40"}">    
            {else}
                <img src="design/{$settings->theme|escape}/images/default_gravatar.jpg" height="40" width="40">
            {/if}
				{$comment->name|escape} <i>{$comment->date|date}, {$comment->date|time}</i>
				{if !$comment->approved}ожидает модерации</b>{/if}
			</div>

			<!-- Имя и дата комментария (The End)-->
			
			<!-- Комментарий -->

			{$comment->text|escape|nl2br}
<!-- Ответ Администратора-->
{if $comment->otvet}
<div class="comment_headeradm">
</p><b>Ответ:</b>
</div>
<div class="comment_otvet">
{$comment->otvet|escape|nl2br}
</div>
{/if}
{/if}
			<!-- Комментарий (The End)-->
		</li>
		{/foreach}
	</ul>
	<!-- Список с комментариями (The End)-->
	{else}
	<p>
		Пока нет комментариев
	</p>
	{/if}
	<!--Форма отправления комментария-->	
	<form class="comment_form" method="post">
		<h2>Написать комментарий</h2>
		{if $error}
		<div class="message_error">
			{if $error=='captcha'}
			Неверно введена капча
			{elseif $error=='empty_name'}
			Введите имя
                        {elseif $error=='empty_email'}
                        Введите E-mail 
			{elseif $error=='empty_comment'}
			Введите комментарий
			{/if}
		</div>
		{/if}
		<textarea class="comment_textarea" id="comment_text" name="text" data-format=".+" data-notice="Введите комментарий">{$comment_text}</textarea><br />
		<div>
		<label for="comment_name">Имя</label> <input class="input_name" type="text" id="comment_name" name="name" value="{$comment_name|escape}" data-format=".+" data-notice="Введите имя"/><br />  
<label for="comment_name">E-Mail</label>
<input class="input_name" type="text" id="comment_email" name="email" value="{$comment_email}" data-format=".+" data-notice="Введите E-Mail"/><br />  
		<input class="button" type="submit" name="comment" value="Отправить" />
		
		<label for="comment_captcha">Число</label>
		<div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}" alt='captcha'/></div> 
		<input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/>
		
		</div>
	</form>
	<!--Форма отправления комментария (The End)-->
	
</div>
<!-- Комментарии (The End) -->

{literal}
<script>
$(function() {
	// Раскраска строк характеристик
	$(".features li:even").addClass('even');

	// Зум картинок
	$("a.zoom").fancybox({ 'hideOnContentClick' : true });
});
</script>
{/literal}
{literal}
<script>
$(function() {
	// Выбор вариантов
	$('select[name=variant]').change(function() {
		price = $(this).find('option:selected').attr('price');
		compare_price = '';
		if(typeof $(this).find('option:selected').attr('compare_price') == 'string')
			compare_price = $(this).find('option:selected').attr('compare_price');
		$(this).find('option:selected').attr('compare_price');
		$(this).closest('form').find('span').html(price);
		$(this).closest('form').find('strike').html(compare_price);
		return false;
	});
 
});
</script>
{/literal}

Ссылка на сообщение
Поделиться на другие сайты

вот отрывок кода измененный, замените у себя

<!-- Выбор варианта товара -->
<h4>Размер:</h4>
		<form class="variants" action="/cart">
			
<select name="variant" {if $product->variants|count==1  && !$product->variant->name}style='display:none;'{/if}>
				{foreach $product->variants as $v}
				<option value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}">
				{$v->name}
				</option>
				{/foreach}
                         </select></p>

			<div class="price">
<h4>Цена</h4>

<h4>Количество:</h4><select name="amount" class="amounts">
{section name=amounts start=1 loop=$product->variant->stock+1 step=1}
<option value="{$smarty.section.amounts.index}" {if $product->amount==$smarty.section.amounts.index}selected{/if}>{$smarty.section.amounts.index} {$settings->units}</option>
{/section}
</select>
				<strike>
				{if $product->variant->compare_price > 0}
				{$product->variant->compare_price|convert}
				{/if}
				</strike>
				<span>{$product->variant->price|convert}</span>
				<i>{$currency->sign|escape}</i>
                         </div></p>


 <input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
		</form>
			
		<!-- Выбор варианта товара (The End) -->
		{else}
			Нет в наличии
		{/if}
Ссылка на сообщение
Поделиться на другие сайты

все равно добавляется 1 шт

значит класс скрипта где то не совпадает, скиньте сайт, где не работает

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

где то с классом у вас проблема

в чем может быть проблема?)вставляю на одном сайте на дефолтном шабе ,все работает)ставлю на свой сайт)заместо выпадающего списка все цифры вряд идут)вообщем селект не работает)в чем может быть беда?)

 

Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...

Добрый день.

Подскажите пожалуйста, а как сделать что бы был не выпадающих список, а поле где можно самому проставить кол-во (в том числе дробное)

Ссылка на сообщение
Поделиться на другие сайты

Большое спасибо, вроде помогло

Без дробного значения наверно можно обойтись, ведь не все в "штуках" торгуют. Мне надо на метраж...

Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...

Добрый день,

А как реализовать это для такой формы ?

 

<div style="margin-left:24px;">
<input type="button" class="minus" value="-"/>
<input type="text" class="text1" id="man" value="1"/>
<input type="button" class="plus" value="+"/>
<input type="submit" class="button2" value=" " data-result-text=""/>
</div>

Заранее спасибо!

Ссылка на сообщение
Поделиться на другие сайты
  • 5 месяцев спустя...

Добавил, все рабоатает, единственная проблема, в товарах с несколькими вариантами добавляется количество первого варианта. Вот например ссылка . Сталкивался кот нибудь с таким?

 

Все решил проблему )

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...

Помогите пожалуйста. У меня Аякс корзина не стандартная, код такой:

// Аяксовая корзина
$('form.variants').live('submit', function(e) {
	e.preventDefault();
	button = $(this).find('input[type="submit"]');
	var idProduct =  $(this).attr('id');
	$.ajax({
		url: "ajax/cart.php",
		data: {variant: $(this).find('input[name=variant]:checked').val()},
		dataType: 'json',
		success: function(data){
			$('#cart_informer').html(data);
			if(button.attr('data-result-text'))
				button.val(button.attr('data-result-text'));
		modalPopup(idProduct);		
		}
	});

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

Ссылка на сообщение
Поделиться на другие сайты

блин((( все сделал как надо, раз 40 перепроверил меня выкидывает в корзину(((.

 

 

// Аяксовая корзина
$('form.cart').live('submit', function(e) {
    e.preventDefault();
    button = $(this).find('input[type=submit]');
    $.ajax({
        url: "ajax/cart.php",
         data: {variant: ($(this).find('input[name=variant]:checked').val() || $(this).find('select[name=variant]').val()),
        dataType: 'json',
        success: function(data){
            $('#cart_informer').html(data);
            if(button.attr('data-result-text'))
                button.val(button.attr('data-result-text'));
        }
    });
    var o1 = $(this).offset();
    var o2 = $('#cart_informer').offset();
    var dx = o1.left - o2.left;
    var dy = o1.top - o2.top;
    var distance = Math.sqrt(dx * dx + dy * dy);
    $(this).closest('.product').find('.image img').effect("transfer", { to: $("#cart_informer"), className: "transfer_class" }, distance);    
    $('.transfer_class').html($(this).closest('.product').find('.image').html());
    $('.transfer_class').find('img').css('height', '100%');
    return false;
});
 
/*
 
скажите пожалуйста где ошибка?
 
div class="price">
            <strike class='compare_price right'>{if $product->variant->compare_price > 0}{$product->variant->compare_price|convert}{else}{/if} </strike>
            {if $product->variant->price >0}<span>{$product->variant->price|convert}</span><i>{$currency->sign|escape}</i>   <input type=button value="-" class="add1" onclick="javascript:this.form.amount.value= this.form.amount.value<=1 ? 1 :parseInt(this.form.amount.value)-1 ;">
<input type="text" style="border:1px solid #C8C7C7; height:21px; width:38px; text-align:center; font-size:11px" name="amount" value="1">
<input type=button value="+" class="add2" onclick="javascript:this.form.amount.value= this.form.amount.value>=1000 ? 1000 :parseInt(this.form.amount.value)+1 ;">{if $product->variant->stock}          {$product->variant->stock|escape}шт{/if}{else}<small class='right' title='Не назначена цена'><br />Под заказ</small>
            {/if}
            </div>  
         <div class="variants">
          
          </div>
Изменено пользователем fly90
Ссылка на сообщение
Поделиться на другие сайты

 

Вообщем собрал все, что мог на форуме и решил запилить в отдельной теме полностью рабочий код для симплы 2.х.

Основной вклад во все это сделал модератор http://forum.simplacms.ru/user/311-danya/

 

Код в ajax-cart.js:

$('form.variants').live('submit', function(e) {
    e.preventDefault();
    var button = $(this).find('input[type="submit"]');
    $.ajax({
        url: "ajax/cart.php",
        data: {variant: ($(this).find('input[name=variant]:checked').val() || $(this).find('select[name=variant]').val()),
        amount: $(this).find('select[name="amount"]').val()
        },
        dataType: 'json',
        success: function(data){
            $('#cart_informer').html(data);
            if(button.attr('added_text'))
                button.val(button.attr('added_text'));
        }
    });
    var o1 = $(this).offset();
    var o2 = $('#cart_informer').offset();
    var dx = o1.left - o2.left;
    var dy = o1.top - o2.top;
    var distance = Math.sqrt(dx * dx + dy * dy);
    $(this).closest('.product').find('.image img').effect("transfer", { to: $("#cart_informer"), className: "transfer_class" }, distance);
    $('.transfer_class').html($(this).closest('.product').find('.image').html());
    $('.transfer_class').find('img').css('height', '100%');
    return false;});

И код выпадающего списка, вставляем туда, где требуется:

<select name="amount" class="amounts">
{section name=amounts start=1 loop=$product->variant->stock+1 step=1}
<option value="{$smarty.section.amounts.index}" {if $product->amount==$smarty.section.amounts.index}selected{/if}>{$smarty.section.amounts.index} {$settings->units}</option>
{/section}
</select>

Спасибо большое код полностью рабочий, но у меня есть проблема с которой я не могу разобраться я вам написал в л.с

Ссылка на сообщение
Поделиться на другие сайты

Тут неверно:

data: {variant: ($(this).find('input[name=variant]:checked').val() || $(this).find('select[name=variant]').val()),

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

Ссылка на сообщение
Поделиться на другие сайты

data: {variant: $(this).find('input[name=variant]:checked').val(), amount: $(this).find('input[name=amount]').val()},

Спасибо но это не помогло :( Что то тут не то, не добавляет кол-во товара в корзину.

Изменено пользователем Slip
Ссылка на сообщение
Поделиться на другие сайты

Тут неверно:

data: {variant: ($(this).find('input[name=variant]:checked').val() || $(this).find('select[name=variant]').val()),

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

Что за подсказка? Куда смотреть, помогите пожалуйста.

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...