Обязательные поля для заполнения в msOrder

Добрый день!

miniShop2 :: Настройки :: Варианты доставки

В настройках есть обязательные поля для заполнения, исключил «email», а он все равно при заказе обязателен для заполнения, как выключить?

Спасибо!

п.с. все понимаю, но заказчик хочет именно так, для него «Получатель + Телефон» достаточно!
Роман
29 июня 2017, 18:36
modx.pro
4 347
0

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

Володя
29 июня 2017, 22:22
+1
его не выключить.
— можно скрыть поле и заполнить например тем же самым телефонным номером
— можно расширить метод заказа и переписать там место с обязаловкой email
    Роман
    29 июня 2017, 22:27
    0
    — можно скрыть поле и заполнить например тем же самым телефонным номером
    Скрыв поле, то вообще форму не отправить же?
    — можно расширить метод заказа и переписать там место с обязаловкой email
    Попробую с утра перечитать ваши сообщения, или тут запятых не хватает где то, или мне поспать нужно. Не чего не могу понять!
      Роман
      01 июля 2017, 12:00
      0
      — можно скрыть поле и заполнить например тем же самым телефонным номером
      {foreach ['receiver','phone','email'] as $field}
                      <div class="row">
                          <div class="form-group input-parent">
                              <label class="col-md-3 control-label" for="{$field}">
                                  <span class="required-star">*</span> {('ms2_frontend_' ~ $field) | lexicon}
                              </label>
                              <div class="col-sm-6">
                                  <input type="text" id="{$field}" placeholder="{('ms2_frontend_' ~ $field) | lexicon}"
                                         name="{$field}" value="{$form[$field]}"
                                         class="form-control{($field in list $errors) ? ' error' : ''}">
                              </div>
                          </div>
                      </div>
                  {/foreach}
      Как его скрыть, если оно генерируется автоматом, переписать его без Fenom'a!? Опять же, а если пользователь хочет оставить e-mail, что бы ему на почту пришел заказ?

      — можно расширить метод заказа и переписать там место с обязаловкой email
      Вот тут можно по подробнее? Очень заинтересовало «переписать там место с обязаловкой email»
        Stan Ezersky
        01 июля 2017, 12:12
        1
        +2
        Рабочий код с работающего сайта.

        При клике на кнопку «Нет email» поле для ввода почты прячется, в инпут подставляется фейковый емейл в формате датасегодня@fakemail.com

        <div class="form-group">
        				<label for="email">
        					<span class="required">*</span> Email
        				</label>
        				<input type="email" id="email" placeholder="Email" name="email" value="" class="form-control{('email' in list $errors) ? ' error' : ''}">
        				<span  id="noemail" type="button">Нет email</span>
        			</div>
        И js

        //Fake Email generate
        	
        	$('#noemail').click(function(){
        		var time = Date.now();
        		var fakeemail = time + "@fakemail.com";
        		$('#email').val(fakeemail).hide();
        		$('#noemail').hide();
        	});
        Дальше сами, думаю, ничего разжёвывать не надо
          Роман
          01 июля 2017, 12:44
          0
          Спасибо, пока повесил ваш вариант, а есть более элегантное решение т.е. вообще исключить Email из обязательных полей? Как ни крути, но выше предложный вариант — это костыль!
            Воеводский Михаил
            01 июля 2017, 13:20
            +1
            Исключить email нельзя, тк на его основе создаётся пользователь, а для пользователя почта обязательна.
            Stan Ezersky
            01 июля 2017, 15:05
            0
            Как ни крути, но выше предложный вариант — это костыль!
            Я, лично, не считаю такое решение костылём.

            Пока что, это единственное решение позволить оформлять покупки без email-адреса.

            Буду признателен, да и не только я, если найдёте элегантное решение.

            Ниже Михаил написал, что обязательное указание email встроено в ядро miniShop2 и без него никак.
            Владимир
            14 ноября 2017, 19:44
            0
            что-то я добавил ваш код и код скрипта на страницу и при нажатии у меня ничего не происходит (((
            код скрипта просто добавил сразу после html, который вы написали
            <script>
            $('#noemail').click(function(){
            var time = Date.now();
            var fakeemail = time + "@fakemail.com";
            $('#email').val(fakeemail).hide();
            $('#noemail').hide();
            });
            </script>
            я с js вообще не дружу ( что-то забыл еще прописать, да?
              Stan Ezersky
              14 ноября 2017, 20:16
              0
              что-то забыл еще прописать, да?
              Да:)

              <div class="form-group">
              		<label class="control-label visible-xs" for="email">
              			<span class="required-star">*</span> Email
              		</label>
              		<input type="email" id="email" placeholder="Email" name="email" value="" class="input-lg form-control{('email' in list $errors) ? ' error' : ''}">
              		<span  id="noemail" type="button" class="small dashed red" style="cursor:pointer;color: #ff0000; border-bottom: 1px dashed #ff0000;">Нет email</span>
              	</div>
                Владимир
                14 ноября 2017, 20:19
                0
                :) ну это понятно. вот только у меня не срабатывает сам js
                там в коде js что-то нужно дописывать или это весь код?
                сорри за такие тупые вопросы, просто реально не знаю js, сейчас пытаюсь найти в гугле по этому поводу
                  Stan Ezersky
                  14 ноября 2017, 20:52
                  0
                  Весь чанк выкладывайте
                    Stan Ezersky
                    14 ноября 2017, 20:55
                    0
                    Вызываем после подключения jquery.js

                    Вообще, js выносите и оборачивайте
                    (function($){
                      $(document).ready(function(){
                        $('#noemail').click(function(){
                          var time = Date.now();
                          var fakeemail = time + "@fakemail.com";
                          $('#email').val(fakeemail).hide();
                          $('#noemail').hide();
                        });
                      });
                    })(jQuery);
                      Владимир
                      14 ноября 2017, 21:26
                      0
                      блин, ну конечно, как всегда, самое элементарное, вызывал до вызова jquery.js
                      спасибо! сори за беспокойство!

                      вот думаю как еще усовершенствовать в виде кнопки, чтобы можно было скрывать и показывать…
              Stan Ezersky
              01 июля 2017, 15:06
              +1
              Вот тут можно по подробнее? Очень заинтересовало «переписать там место с обязаловкой email»
              Решение будет подобным, фейковый email
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            15