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


Фото
- - - - -

Варианты товара выпадающим списком и при этом меняется цена

смена цены при смене варианта

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

#1 Vince

Vince
  • Пользователь
  • 95 сообщений

Опубликовано 07.08.2014 - 18:15

Господа хорошие) поделитесь строками вариантов товара выпадающим списком что бы при смене варианта и цена менялась. Спасибо заранее!



#2 Noxter

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

Опубликовано 07.08.2014 - 19:50

JS скрипт:

// Выбор варианта
$('select[name=variant]').live('change', function(){
	price = $(this).find('option:selected').attr('data-price');
	compare_price = '';
	if(typeof $(this).find('option:selected').attr('data-compare-price') == 'string')
		compare_price = $(this).find('option:selected').attr('data-compare-price');
	$(this).closest('form.variants').find('.prc-new').html(price);
	$(this).closest('form.variants').find('.prc-old').html(compare_price);
	return false;
}); 

 

Сама разметка html:

<!-- Выбор варианта товара -->
<form class="variants" action="/cart">
	<div class="price">
		<div class="prc-old">
			{$product->variant->compare_price|convert}&nbsp;{$currency->sign|escape}
		</div>
		<div class="prc-new">
			{$product->variant->price|convert}&nbsp;{$currency->sign|escape}
		</div>
	</div>
	<div class="cart">
		{if $product->variants|count > 0}
			{if $product->variants|count>1}
			<select name="variant">
				{foreach $product->variants as $v}
				<option value="{$v->id}" data-price="{$v->price|convert}&nbsp;{$currency->sign|escape}" data-compare-price="{$v->compare_price|convert}&nbsp;{$currency->sign|escape}">{$v->name}</option>
				{/foreach}
			</select>
			{else}
			<input name="variant" value="{$product->variant->id}" type="radio" checked style="display:none!important;"/>
			{/if}
			<input class="button" type="submit" value="В корзину"/>
		{else}
			Нет в наличии
		{/if}
	</div>
</form>
<!-- end -->


#3 Vince

Vince
  • Пользователь
  • 95 сообщений

Опубликовано 07.08.2014 - 21:05

Спасибо! :)



#4 Noxter

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

Опубликовано 07.08.2014 - 21:31


Спасибо! :)


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

#5 drakulitkas

drakulitkas
  • Пользователь
  • 218 сообщений
  • Программирование, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Орехово-Зуево

Опубликовано 07.08.2014 - 21:52

Господа хорошие) поделитесь строками вариантов товара выпадающим списком что бы при смене варианта и цена менялась. Спасибо заранее!

еще бы менялось фото, описание, характеристики и отзывы... 



#6 Noxter

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

Опубликовано 07.08.2014 - 22:06


еще бы менялось фото, описание, характеристики и отзывы...


Вы хоть сами понимаете что пишите?

#7 Kosjak76

Kosjak76
  • Модератор
  • 3 857 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 07.08.2014 - 22:06

еще бы менялось фото, описание, характеристики и отзывы... 

А это все разное для вариантов???

Нафига такие посты писать? Зачем вообще нужны товары, у которых все разное? Какой в этом смысл? 

Обьясните, я просто не понимаю, ЗАЧЕМ ЭТО????



#8 Kosjak76

Kosjak76
  • Модератор
  • 3 857 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 07.08.2014 - 22:08

Если у вариантов ОДНОГО товара НЕТ ничего общего - то это - НЕ ВАРИАНТЫ ОДНОГО ТОВАРА :)



#9 Vince

Vince
  • Пользователь
  • 95 сообщений

Опубликовано 07.08.2014 - 22:08

Все работает нормально только что увидел что старая цена отображается даже если 0грн как ее убрать?



#10 XIIIcool

XIIIcool
  • Пользователь
  • 82 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x

Опубликовано 07.08.2014 - 23:04

для этого есть if (если) посмотрите в гугле php if

ps просто посмотреть как устроена симпла и можно сделать всё что захочешь, главное чуть чуть думать



#11 drakulitkas

drakulitkas
  • Пользователь
  • 218 сообщений
  • Программирование, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Орехово-Зуево

Опубликовано 09.08.2014 - 08:31

Вы хоть сами понимаете что пишите?

Ну например возьмем процессор для PC, он поставляется в заводской упаковке без излишеств (ОЕМ) а есть и в красочной упаковке с разными фишками инструкциями, до ПО, возможно даже с кулером и т.д. (BOX).

Вот тут товар один, название одно, возможно и характеристики одни, а фото и комплектность разная, соответственно и цена разная, поэтому для кого-то это неприемлемо а для кого-то нужно, все зависит от сферы деятельности ИМ.



#12 Noxter

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

Опубликовано 09.08.2014 - 10:15

Прочитайте первый пост. Моего решения вполне хватает чтобы решить задачу топикстартера.

#13 Sain

Sain
  • Пользователь
  • 8 сообщений
  • Версия CMS:2.x

Опубликовано 09.08.2014 - 15:12

удалено



#14 Sain

Sain
  • Пользователь
  • 8 сообщений
  • Версия CMS:2.x

Опубликовано 09.08.2014 - 15:12

		<!-- Выбор варианта товара -->
		<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">
				<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>
		<!-- ПОМЕНЯНО (The End)-->		
			<input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
		</form>
		<!-- Выбор варианта товара (The End) -->

 



#15 Sain

Sain
  • Пользователь
  • 8 сообщений
  • Версия CMS:2.x

Опубликовано 09.08.2014 - 15:13

Скрипт:

<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>


#16 drakulitkas

drakulitkas
  • Пользователь
  • 218 сообщений
  • Программирование, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Орехово-Зуево

Опубликовано 09.08.2014 - 18:49

Прочитайте первый пост. Моего решения вполне хватает чтобы решить задачу топикстартера.

Согласен, его задача решена.

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

Есть два варианта: в галерею фото добавить мышь и белого и красного цвета или делать 2 разных товара, т.е. создаешь копию красной мышки и меняешь там фото мышки на белый цвет. (в названии отмечаешь)

Вот тут бы и пригодилось бы смена фото при смене варианта, я имел ввиду это.



#17 Vince

Vince
  • Пользователь
  • 95 сообщений

Опубликовано 10.08.2014 - 17:24

Скрипт:

<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>

Да ноль теперь убрался но цена не обновляетсяпри смене варианта



#18 Noxter

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

Опубликовано 10.08.2014 - 17:52

Да ноль теперь убрался но цена не обновляетсяпри смене варианта

Нашли кого слушать. Там полностью код для html не правильный.

#19 Vince

Vince
  • Пользователь
  • 95 сообщений

Опубликовано 10.08.2014 - 18:40

Нашли кого слушать. Там полностью код для html не правильный.

подскажите решение пожалуйста. 



#20 Noxter

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

Опубликовано 10.08.2014 - 18:44

подскажите решение пожалуйста.

Используйте решение то которое я дал, а для того чтобы не выводилась цена с нулем сделайте проверку в html:
<div class="prc-old">
{if $product->variant->compare_price}
{$product->variant->compare_price|convert}&nbsp;{$currency->sign|escape}
{/if}
</div>
и вот это data-compare-price="{$v->compare_price|convert}&nbsp;{$currency->sign|escape}" измените на:
data-compare-price="{if $product->variant->compare_price}{$v->compare_price|convert}&nbsp;{$currency->sign|escape}{/if}"





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

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