Oleg

Oleg

С нами с 16 марта 2019; Место в рейтинге пользователей: #12053
Андрей
28 марта 2019, 10:40
1
+1
Самое главное — это внимательность =) Ну и немного логики.

{foreach $deliveries as $delivery index=$index}
{var $checked = !$order.delivery && $index == 0 || $delivery.id == $order.delivery}
    
    <label> // лишний открывающий тег
        <input id="{$delivery.id}" type="radio" name="delivery" class="radio" value="{$delivery.id}" id="delivery_{$delivery.id}" data-payments="{$delivery.payments | json_encode}" {$checked ? 'checked' : ''}>
    // В input выше два раза указан id, из за чего и глючит js.
    
    //Если сильно надо то ниже id надо указывать как в input - delivery_{$delivery.id}
    <label for="{$delivery.id}" class="label">
        {if $delivery.logo?}
            <img src="{$delivery.logo}" alt="{$delivery.name}" title="{$delivery.name}"/>
        {else}
            {$delivery.name}
         {/if}
        
         {*if $delivery.description?}
             <p class="small">
                  {$delivery.description}
             </p>
         {/if*}
        </span> // лишний закрывающий тег
        </label>
{/foreach}

А если из консоли браузера перейти в файл в котором указывается эта ошибка, то там сразу было видно на что ругается скрипт)
Баха Волков
25 марта 2019, 13:43
1
+1
Пересоздание/создание собственного класса который наследует оригинальный класс и в котором переопределяется один или несколько методов оригинального класса
Игорь Гришанов
23 марта 2019, 16:33
3
+2
Павел абсолютно прав) Только что делал таким образом

Порядок действий такой
1) Находишь файл core/components/minishop2/model/minishop2/msorderhandler.class.php
2) находишь там функцию getCost и заменяешь ее тем что в приведенной Павлом ссылке
3) добавляешь скрипт из той же ссылки на страницу Оформления заказа в самом низу
4) выводишь ссылку в нужном месте
<span id="deliveryprice">Стоимость доставки: <span id="ms2_delivery_cost"></span> руб.</span>

это будет цена доставки
5) если еще надо цену заказа БЕЗ доставки то добавляешь в скрипт в функцию miniShop2.Callbacks.Order.getcost.response.success
такие строки например
var cartcost = response.data['cost'] - rdc;
    $('#ms2_cost').text(cartcost);
тогда ссылка на цену без доставки будет так
<span  id="ms2_cost"></span>
Дмитрий Середюк
16 марта 2019, 23:22
4
+1
<form method="post" class="ms2_form form-inline" role="form">
    <input type="hidden" name="key" value="{$product.key}"/>
    <div class="number-item">
        <button class="minus">-</button>
            <input type="num" class="amout" data-amout="amout" data-min="1" data-max="9999" name="count" value="{$product.count}">
        <button class="plus">+</button>
    </div>
    <button class="btn btn-default" type="submit" name="ms2_action" value="cart/change"></button>
</form>

function itemCount(field){
    var fieldCount = function(el) {
        var
	    // Мин. значение
	    min = el.data('min') || false,
	    // Макс. значение
	    max = el.data('max') || false,
	    // Кнопка уменьшения кол-ва
	    dec = el.prev('.minus'),
	    // Кнопка увеличения кол-ва
	    inc = el.next('.plus');
	function init(el) {
	    if(!el.attr('disabled')){
		dec.on('click', decrement);
		inc.on('click', increment);
	    }
	    // Уменьшим значение
	    function decrement() {
		var value = parseInt(el[0].value);
		value--;
		if(!min || value >= min) {
		    el[0].value = value;
	         }
	    }
	   // Увеличим значение
	   function increment() {
		var value = parseInt(el[0].value);
		value++;
		if(!max || value <= max) {
		    el[0].value = value++;
		}
	    }
	}
	el.each(function() {
	    init($(this));
	});
    };
    $(field).each(function(){
        fieldCount($(this));
    });
 } itemCount('[data-amout="amout"]');
Евгений Webinmd
16 марта 2019, 22:31
3
+1
у меня такой код

js
$('.bminus').on('click',function () {
    var $input = $(this).parent().find('input');
    var val = +$input[0].defaultValue;
    var count = parseInt($input.val()) - 1;
    count = count < 1 ? 1 : count; 
    $input.val(count);
    $input.change();
    return false;
});

$('.bplus').on('click',function () {
    var $input = $(this).parent().find('input');
    var val = +$input[0].defaultValue; 
    $input.val(parseInt($input.val()) + 1);
    $input.change();
    return false;
});
html
<div class="quantity">
    <input type="text" name="count" value="1"  required>
    <span class="bplus"></span>
    <span class="bminus"></span>
</div>