Поменять радио на селект simpla

Поменять радио на селект simpla

Совсем недавно я начал изучать хороший движок для Интернет-магазина Simpla! Очень отзывчивый и гибкий движок.

Но некоторые функции еще не доработаны. Желаю ребятам-разработчикам творческих успехов и поскорее реализовать недостающий функционал.

А пока они работают, я расскажу вам как заменить radiobutton на select - если имеется несколько вариантов товара с разными ценами.

Радио буттоны выглядят громоздно, а выпадающий список, который можно еще и стилизовать - довольно культурно.

Для начала идем в шаблон product.tpl и ищем следующие строки:

<table>
			{foreach $product->variants as $v}
			<tr class="variant">
				<td>
					<input id="variants_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $v@first}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>
				</td>
				<td>
					{if $v->name}<label class="variant_name" for="variants_{$v->id}">{$v->name}</label>{/if}
				</td>
				<td>
					{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
					<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
				</td>
			</tr>
			{/foreach}
			</table>

И меняем на:

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

В конец страницы добавляем скрипт:

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

Профит...!

P.S. Эти действия надо сделать для всех страниц, где выводятся товары (products.tpl, main.tpl...). Скрипт достаточно вставлять 1 раз на страницу, даже если радиобуттоны меняете больше 1 раза. И убедитесь, что у вас подключена библиотека jQuery

04.04.17
Для просмотра сайта обновите браузер.