Не обновляется стоимость доставки при выборе в форме заказа
Здравствуйте!
Хочу поднять вопрос который так и не был решён на протяжении уже нескольких лет, если судить из тем на форуме.
Как вы уже поняли при выборе доставки в разделе «Итого, с доставкой:» цена сразу не обновляется, нужно перезагружать страничку и после этого будет отображаться цена с доставкой.
Кто знает как решить данную проблему?
Хочу поднять вопрос который так и не был решён на протяжении уже нескольких лет, если судить из тем на форуме.
Как вы уже поняли при выборе доставки в разделе «Итого, с доставкой:» цена сразу не обновляется, нужно перезагружать страничку и после этого будет отображаться цена с доставкой.
Кто знает как решить данную проблему?
Комментарии: 12
А например на демо сайте minishop2.com всё прекрасно работает.
Ставим дефолтный чанк и сверяем со своим, проверяем нужные id, например цена должна быть обёрнута:
Ставим дефолтный чанк и сверяем со своим, проверяем нужные id, например цена должна быть обёрнута:
<span id="ms2_order_cost">{$order.cost ?: 0}</span>
У меня к примеру выводится точно так же, но всё равно сразу не отображается.
С дефолтным чанком работает? Смотрите логи, ошибки в консоли браузера, может что то с js.
Всё в порядке. Пробовал методично отключать JS, не помогает.
Т.е. даже с чанком по умолчанию не работает? Если да, то это мистика какая то =)
http://s17993.h9.modhost.pro/catalog — вот сайт полностью из коробки на компонентах siteDev и msDemoData, ради интереса добавил способ доставки, проверил, всё считает без перезагрузки. Очевидно что проблема на вашей стороне.
http://s17993.h9.modhost.pro/catalog — вот сайт полностью из коробки на компонентах siteDev и msDemoData, ради интереса добавил способ доставки, проверил, всё считает без перезагрузки. Очевидно что проблема на вашей стороне.
Может я чего не понимаю, что вы имеете ввиду под выражением «чанк по умолчанию»?
Может я чего не понимаю, что вы имеете ввиду под выражением «чанк по умолчанию»?Те чанки которые доступны после установки minishop2 — /minishop2/elements/chunks/chunk.ms_order.tpl
Если просто вызвать msOrder, всё должно работать:
[[!msOrder]]
Либо пишите по шагам что и как вы делаете, код шаблона, код чанков.
Чанк
<form class="ms2_form" id="msOrder" method="post">
<div class="row">
<div class="col-md-6" id="deliveries" style="margin-bottom: 20px">
<h4 style="margin-bottom:7px;">{'ms2_frontend_deliveries' | lexicon}:</h4>
{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' : ''}>
<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}
</div>
<div class="col-md-6" id="payments" style="margin-bottom: 20px">
<h4 style="margin-bottom:7px;">{'ms2_frontend_payments' | lexicon}:</h4>
{foreach $payments as $payment index=$index}
{var $checked = !$order.payment && $index == 0 || $payment.id == $order.payment}
<label>
<input id="{$payment.id}" type="radio" name="payment" class="radio" value="{$payment.id}" id="payment_{$payment.id}"
{$checked ? 'checked' : ''}>
<label for="{$payment.id}" class="label">{if $payment.logo?}
<img src="{$payment.logo}" alt="{$payment.name}" title="{$payment.name}"/>
{else}
{$payment.name}
{/if}
{if $payment.description?}
<p class="small">
{$payment.description}
</p>
{/if}</label>
</label>
{/foreach}
</div>
</div>
<div class="row">
<div class="col-md-6">
<h4>{'ms2_frontend_credentials' | lexicon}:</h4>
{foreach ['email','receiver','phone'] as $field}
<div class="input-parent">
<label class="control-label" for="{$field}">
<span class="required-star">*</span> {('ms2_frontend_' ~ $field) | lexicon}
</label>
<input type="text" id="{$field}" placeholder="{('ms2_frontend_' ~ $field) | lexicon}"
name="{$field}" value="{$form[$field]}"
class="form-control{($field in list $errors) ? ' error' : ''}">
</div>
{/foreach}
</div>
<div class="col-md-6">
<h4>{'ms2_frontend_address' | lexicon}:</h4>
<div class="row">
<div class="col-md-6">
{foreach ['region','city'] as $field}
<div class="input-parent">
<label for=""> <span class="required-star">*</span> {('ms2_frontend_' ~ $field) | lexicon}</label>
<input type="text" id="{$field}" placeholder="{('ms2_frontend_' ~ $field) | lexicon}"
name="{$field}" value="{$form[$field]}"
class="form-control{($field in list $errors) ? ' error' : ''}">
</div>
{/foreach}
</div>
<div class="col-md-6">
{foreach ['street','building','room'] as $field}
<div class="input-parent">
<label class="control-label" for="{$field}">
<span class="required-star">*</span> {('ms2_frontend_' ~ $field) | lexicon}
</label>
<input type="text" id="{$field}" placeholder="{('ms2_frontend_' ~ $field) | lexicon}"
name="{$field}" value="{$form[$field]}"
class="form-control{($field in list $errors) ? ' error' : ''}">
</div>
{/foreach}
</div>
</div>
</div>
<div class="col-md-12">
<label class="control-label" for="comment">
<span class="required-star">*</span> {'ms2_frontend_comment' | lexicon}</label>
<textarea name="comment" id="comment" placeholder="{'ms2_frontend_comment' | lexicon}"
class="form-control{('comment' in list $errors) ? ' error' : ''}">{$form.comment}</textarea>
</div>
<div style="margin-bottom:30px;" class="col-md-12"><strong>{'ms2_frontend_order_cost' | lexicon}:
<span id="ms2_order_cost">{$order.cost ?: 0}</span>
руб.,</strong>
</div>
<div class="col-md-4">
<button type="submit" name="ms2_action" value="order/submit" class="btn btn-default btn-primary ms2_link">
{'ms2_frontend_order_submit' | lexicon}*
</button>
</div>
</div>
</form>
Вы чтото нашли?
Вставил ваш код в чанк, в консоли браузера сразу же видна ошибка, вы же написали что проблем с JS нет =).
Сравнивайте код с оригинальным чанком и приводите в соответствие. Подсказка, проблема внутри блока:
Сравнивайте код с оригинальным чанком и приводите в соответствие. Подсказка, проблема внутри блока:
{foreach $deliveries as $delivery index=$index}
....
{/foreach}
Чтото не пойму. Этот:
{var $checked = !($order.delivery in keys $deliveries) && $index == 0 || $delivery.id == $order.delivery}
Или этот?<label for="{$delivery.id}" class="label">
Потому как кроме них всё идентично и всё равно не работает. Я слишком тупой да?
Самое главное — это внимательность =) Ну и немного логики.
А если из консоли браузера перейти в файл в котором указывается эта ошибка, то там сразу было видно на что ругается скрипт)
{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}
А если из консоли браузера перейти в файл в котором указывается эта ошибка, то там сразу было видно на что ругается скрипт)
Блин, вот как всегда внимательность самое главное. Спасибо за помощь добрый человек! =)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.