Разные варианты оплаты в зависимости от выбранной доставки simpla
Как и обещал - выкладываю решение для вариантов оплаты, в зависимости от выбранного способа доставки. Дело в том, что если мы выберем способ доставки - Почта России, то врядли будет доступен способ оплаты - Наличными курьеру. Из такого принципа и исходил.
Внимание! Решение является нативным, поэтому рассказывать и описывать особо не буду. Кому непонятно - в комментарии.
В конец файла cart.tpl добавляем скрипт:
<script> $(function() { $('.deliver li').click(function(){ if ($(this).is(":nth-child(2)")) { $('.costs li:first-child').slideUp("slow"); $('#payment_11').attr('checked', false); $('#payment_8').attr('checked', true); } else { $('.costs li:first-child').slideDown("slow"); $('#payment_8').attr('checked', false); $('#payment_11').attr('checked', true); } }) }); </script>
При этом способ оплаты и выбор доставки у меня реализуется следующим кодом:
{* Доставка *} {if $deliveries} <h2>Выберите способ доставки:</h2> <ul id="deliveries" class="deliver"> {foreach $deliveries as $delivery} <li> <div class="checkbox"> <input type="radio" onclick="select_delivery_method( {$delivery->id});" name="delivery_id" value="{$delivery->id}" {if $delivery_id==$delivery->id}checked{elseif $delivery@first}checked{/if} id="deliveries_{$delivery->id}"> </div> <h3> <label for="deliveries_{$delivery->id}"> {$delivery->name} {if $cart->total_price < $delivery->free_from && $delivery->price>0} (<span id="delivery_price_{$delivery->id}">{$delivery->price}</span> {$currency->sign}) {elseif $cart->total_price >= $delivery->free_from} (бесплатно) {/if} </label> </h3><span class="more">(подробнее)</span> <div class="description"> {$delivery->description} </div> </li> {/foreach} </ul> {/if} <div class="total-price"> <span id="sub_price" style="display: none;">{$cart->total_price}</span> Итого, с учетом доставки: <span id="subtotal_price"></span> {$currency->sign}. </div> {* Выбор способа оплаты *} {if $payment_methods && !$payment_method} <h2>Выберите способ оплаты:</h2> <ul id="deliveries" class="costs"> {foreach $payment_methods as $payment_method} <li> <div class="checkbox"> <input type=radio name=payment_method_id value='{$payment_method->id}' {if $payment_method@first}checked{/if} id=payment_{$payment_method->id}> </div> <h3><label for=payment_{$payment_method->id}> {$payment_method->name}{*, к оплате {$cart->total_price|convert:$payment_method->currency_id} {$all_currencies[$payment_method->currency_id]->sign}*}</label></h3> <div class="description"> {$payment_method->description} </div> </li> {/foreach} </ul> {/if}
Для тех кто не понял - я рассчитал, что если выбирается второй способ доставки, то первый вариант оплаты скрывается. В противном случае - отображается. При этом необходимо переопределить чекнутый радиобокс. Вот и все.