miniShop2 как вывести описание у определенного способа доставки?

Добрый день!
Мне нужно вывести описание доставки, но только в том случае если выбран определенный способ — Доставка курьером, кроме того вывести нужно не в чанке tpl.msOrder.delivery, а в другом месте.

Как можно это сделать, подскажите пожалуйста, возможно кто-то сталкивался с подобным, а возможно решение на столько просто, что я переусердствовал и ищу слишком сложное решение?
Никита Серов
06 августа 2018, 20:54
modx.pro
1
1 468
+1

Комментарии: 11

Артур
06 августа 2018, 22:10
0
JS — Ваше решение. На событие изменения доставки вешайте свой скрипт. Далее в нем либо через ajax вытаскиваете описание, либо берете описание из скрытого элемента в tpl.msOrder.delivery.
    Никита Серов
    07 августа 2018, 08:59
    0
    Артур, думал, про это, но все же хотелось бы найти способ, может через сниппет или есть какой-то встроенный способ. Не хочется городить скрытый элемент и JS, хотя это и проще я думаю… Спасибо Вам за подсказку, но если ничего больше не посоветуют, буду использовать этот способ.
      Артур
      07 августа 2018, 13:33
      0
      Можете еще добиться версткой, а именно стилями. Выводится в том же чанке. Но это надо смотреть ваш шаблон, насколько далеко это описание находится.
        Никита Серов
        07 августа 2018, 20:18
        0
        Да в том-то и дело, что в другом чанке мне нужно выводить это описание, ну это особенность шаблона. Сейчас пробую через JS. Но знаний мало в нем, поэтому хромает мое исполнение. Думаю, пробую, как получится — отпишу решение.
          Никита Серов
          07 августа 2018, 20:22
          0
          Может есть какой-то способ msOrder вызвать, и в нем указать какие-то параметры?
      Руслан Сафин
      07 августа 2018, 21:05
      1
      0
      Вот на 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() при желании
        Никита Серов
        07 августа 2018, 21:12
        0
        Я сделал немного иначе, наверное, немного топорнее и как-то «по школьному».
        Мой код скрипта:
        <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]]`]] <!--&mdash; <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-сниппет, но что-то я не соображу как это сделать.
        Баха Волков
        07 августа 2018, 22:09
        0
        Js-то ладно, если написать маленький и красивый кусок кода, но вот php уже слишком. Ребята, 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;
        }

        Пример
          Никита Серов
          07 августа 2018, 22:22
          0
          Да, не все так просто, у меня эти input выводятся в одном большом div, в нужный мне description, в другом div, как бы параллельно и вы их не свяжите через CSS таким способом, да и в принципе это не нужно, там форма разработана, что это не требуется. Просто нужно вывести description в другом месте, не там где оно выводится по-умолчанию, я же даже пример кода привел. Разные чанки.
            Баха Волков
            07 августа 2018, 22:47
            1
            0
            HTML:
            <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);
            });
          Руслан Сафин
          07 августа 2018, 22:36
          0
          Брать атрибут с радио кнопки и открывать нужный див с описанием и получится универсальный код, С телефона пишу, за основу можно взять то что я написал, только получать например атрибут с радио кнопки и показывать нужный блок. Завтра могу написать js
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            11