miniShop2 как вывести описание у определенного способа доставки?
Добрый день!
Мне нужно вывести описание доставки, но только в том случае если выбран определенный способ — Доставка курьером, кроме того вывести нужно не в чанке tpl.msOrder.delivery, а в другом месте.
Как можно это сделать, подскажите пожалуйста, возможно кто-то сталкивался с подобным, а возможно решение на столько просто, что я переусердствовал и ищу слишком сложное решение?
Мне нужно вывести описание доставки, но только в том случае если выбран определенный способ — Доставка курьером, кроме того вывести нужно не в чанке tpl.msOrder.delivery, а в другом месте.
Как можно это сделать, подскажите пожалуйста, возможно кто-то сталкивался с подобным, а возможно решение на столько просто, что я переусердствовал и ищу слишком сложное решение?
Комментарии: 11
JS — Ваше решение. На событие изменения доставки вешайте свой скрипт. Далее в нем либо через ajax вытаскиваете описание, либо берете описание из скрытого элемента в tpl.msOrder.delivery.
Артур, думал, про это, но все же хотелось бы найти способ, может через сниппет или есть какой-то встроенный способ. Не хочется городить скрытый элемент и JS, хотя это и проще я думаю… Спасибо Вам за подсказку, но если ничего больше не посоветуют, буду использовать этот способ.
Можете еще добиться версткой, а именно стилями. Выводится в том же чанке. Но это надо смотреть ваш шаблон, насколько далеко это описание находится.
Да в том-то и дело, что в другом чанке мне нужно выводить это описание, ну это особенность шаблона. Сейчас пробую через JS. Но знаний мало в нем, поэтому хромает мое исполнение. Думаю, пробую, как получится — отпишу решение.
Может есть какой-то способ msOrder вызвать, и в нем указать какие-то параметры?
Вот на js, думаю проще всего будет
$(function() {
$('input:radio[name="delivery"]').change(function() {
if ($(this).val() == '1') {
$('.div_s_blokom_opisaniya').css('display','block');
} else {
$('.div_s_blokom_opisaniya').css('display','none');
}
});
});
Можно использовать .fadeIn() и .fadeOut() при желании
Я сделал немного иначе, наверное, немного топорнее и как-то «по школьному».
Мой код скрипта:
Мой код скрипта:
<script>
function myScript1() {
var dd1 = $("input#delivery_1_desc").val();
$( "#deliveri-description" ).html( dd1 );
};
function myScript2() {
var dd2 = $("input#delivery_2_desc").val();
$( "#deliveri-description" ).html( dd2 );
};
function myScript3() {
var dd3 = $("input#delivery_3_desc").val();
$( "#deliveri-description" ).html( dd3 );
};
</script>
Мой код tpl.msOrder.delivery:<input class="delivery-chek" type="radio" name="delivery" value="[[+id]]" id="delivery_[[+id]]" data-payments='[[+payments]]'>
<label class="delivery input-parent btn col-sm-4 col-xs-4" id="dev_[[+id]]" for="delivery_[[+id]]" onclick="myScript[[+id]]();">
[[+logo:default=`[[+name]]`]] <!--— <i>[[+price]] [[%ms2_frontend_currency]]</i>-->
<input id="delivery_[[+id]]_desc" type="hidden" value="[[+description]]">
</label>
Мой код в чанкеtpl.msOrder.outer, где мне и нужно выводить описание(в пример привел только сам блок, все остальное не имеет смысла тут городить:<div id="deliveri-description"></div>
Строго не судите, но мое решение было таким. На мой взгляд, лучше было бы конечно сделать через php-сниппет, но что-то я не соображу как это сделать.
Js-то ладно, если написать маленький и красивый кусок кода, но вот php уже слишком. Ребята, CSS бы юзать:
HTML
CSS
Пример
HTML
<input type="radio" name="delivery" id="del1">
<label for="del1">
Пункт 1
<p class="description">Описание 1</p>
</label>
<input type="radio" name="delivery" id="del2">
<label for="del2">
Пункт 2
<p class="description">Описание 2</p>
</label>
<input type="radio" name="delivery" id="del3">
<label for="del3">
Пункт 3
<p class="description">Описание 3</p>
</label>
CSS
.description {
display: none;
}
input:checked + label > p.description {
display: block;
}
Пример
Да, не все так просто, у меня эти input выводятся в одном большом div, в нужный мне description, в другом div, как бы параллельно и вы их не свяжите через CSS таким способом, да и в принципе это не нужно, там форма разработана, что это не требуется. Просто нужно вывести description в другом месте, не там где оно выводится по-умолчанию, я же даже пример кода привел. Разные чанки.
HTML:
JS (jQuery):
<input type="radio" name="delivery" id="del1" data-description="Описание 1">
<label for="del1">
Пункт 1
</label>
<input type="radio" name="delivery" id="del2" data-description="Описание 2">
<label for="del2">
Пункт 2
</label>
<input type="radio" name="delivery" id="del3" data-description="Описание 3">
<label for="del3">
Пункт 3
</label>
<div id="description"></div>
JS (jQuery):
$('input[type="radio"]').on('change', function() {
var desc = $(this).data('description');
$('#description').text(desc);
});
Брать атрибут с радио кнопки и открывать нужный див с описанием и получится универсальный код, С телефона пишу, за основу можно взять то что я написал, только получать например атрибут с радио кнопки и показывать нужный блок. Завтра могу написать js
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.