Калькулятор доставки simpla

Калькулятор доставки simpla

Достаточно часто в Интернет-магазинах используется платная доставка товара. Задача состоит в том, чтобы в cms simpla реализовать калькулятор доставки, чтобы итоговая цена при оформлении заказа указывалась с учетом доставки, если она платная. Сделаем это.

Отрываем редактор шаблонов нашей темы и идем в файл cart.tpl.

Ищем там строчку:

<span id="subtotal_price">{$cart->total_price}</span>&nbsp;{$currency->sign}

Если ее нет, тогда эту:

{$cart->total_price|convert}&nbsp;{$currency->sign}

И меняем на этот код:

<span id="sub_price" style="display: none;">{$cart->total_price}</span>
<span id="subtotal_price"></span>&nbsp;{$currency->sign}

Теперь находим тег <input type="radio" name="delivery_id" ...>. Он обязательно есть. Вставляем в него:

onclick="select_delivery_method({$delivery->id});"

Таким образом, должно получиться что-то типа:

<input type="radio" name="delivery_id" onclick="select_delivery_method({$delivery->id});"
 value="{$delivery->id}" {if $delivery_id==$delivery->id}checked{elseif 
$delivery@first}checked{/if} id="deliveries_{$delivery->id}">

Теперь находим:

({$delivery->price|convert}&nbsp;{$currency->sign})

Меняем на:

(<span id="delivery_price_{$delivery->id}">{$delivery->price}</span>&nbsp;{$currency->sign})

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

<script>
      function select_delivery_method(method_id)
      {
        radiobuttons = document.getElementsByName('delivery_id');
        for(var i=0;i<radiobuttons.length;i++)
        {
          if(radiobuttons[i].value == method_id)
          {
            radiobuttons[i].checked = 1;
          }
        }
 
      var subtotal = parseFloat(document.getElementById('sub_price').innerHTML);
      var delivery = 0;
      if(document.getElementById('delivery_price_'+method_id))
        delivery = parseFloat(document.getElementById('delivery_price_'+method_id).innerHTML);
      total = subtotal+delivery;
 
         document.getElementById('subtotal_price').innerHTML = total;                             
      }
    </script>
    <script>
      select_delivery_method(1);
    </script>

Вот и все. Теперь у нас расчитывается итоговая стоимость с учетом доставки.

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