К содержанию

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

Добрый день!

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

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

Спасибо!

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

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

Володя
Володя Эксперт
29 июня 2017, 22:22
его не выключить.
— можно скрыть поле и заполнить например тем же самым телефонным номером
— можно расширить метод заказа и переписать там место с обязаловкой email
    Роман
    Роман Старожил
    29 июня 2017, 22:27
    — можно скрыть поле и заполнить например тем же самым телефонным номером
    Скрыв поле, то вообще форму не отправить же?
    — можно расширить метод заказа и переписать там место с обязаловкой email
    Попробую с утра перечитать ваши сообщения, или тут запятых не хватает где то, или мне поспать нужно. Не чего не могу понять!
      Роман
      Роман Старожил
      01 июля 2017, 12:00
      — можно скрыть поле и заполнить например тем же самым телефонным номером
      {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
        Stan Ezersky Проверенный
        01 июля 2017, 12:12
        Рабочий код с работающего сайта.

        При клике на кнопку «Нет 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
          Спасибо, пока повесил ваш вариант, а есть более элегантное решение т.е. вообще исключить Email из обязательных полей? Как ни крути, но выше предложный вариант — это костыль!
            Воеводский Михаил
            Воеводский Михаил Проверенный
            01 июля 2017, 13:20
            Исключить email нельзя, тк на его основе создаётся пользователь, а для пользователя почта обязательна.
              Роман
              Роман Старожил
              01 июля 2017, 13:21
              Понял
              Stan Ezersky
              Stan Ezersky Проверенный
              01 июля 2017, 15:05
              Как ни крути, но выше предложный вариант — это костыль!
              Я, лично, не считаю такое решение костылём.

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

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

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

                <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
                  :) ну это понятно. вот только у меня не срабатывает сам js
                  там в коде js что-то нужно дописывать или это весь код?
                  сорри за такие тупые вопросы, просто реально не знаю js, сейчас пытаюсь найти в гугле по этому поводу
                    Stan Ezersky
                    Stan Ezersky Проверенный
                    14 ноября 2017, 20:52
                    Весь чанк выкладывайте
                      Stan Ezersky
                      Stan Ezersky Проверенный
                      14 ноября 2017, 20:55
                      Вызываем после подключения 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
                        блин, ну конечно, как всегда, самое элементарное, вызывал до вызова jquery.js
                        спасибо! сори за беспокойство!

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