Обязательное поле "Номер телефона" вместо "Email"

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

makki
makki
Репутация: 147
Сообщения: 418
Зарегистрирован: 12.08.2016
С нами: 2 года 9 месяцев
Откуда: Киев
Сайт Skype

Сообщение #1 makki » 11.09.2017, 10:18

Мое скромное мнение, что на странице оформления заказа для незарегистрированных пользователей нет смысла делать обязательным поле Email. Вместо этого лучше сделать обязательным поле "Номер телефона", а Email - опциональным. Если E-mail заполнено, покупатель получает уведомление о заказе, в противном случае - нет.
Сделал и решил поделиться.
1) В файле design/ваш_шаблон/html/scripts.tpl находим строку

Код: Выделить всё

if($(".fn_validate_cart").size()>0) {

и меняем содержимое условия if на следующее

Код: Выделить всё

        $(".fn_validate_cart").validate({
            rules: {
                name: "required",
                phone: "required",
                //email: {
                //    required: true,
                //    email: true
                //},
                captcha_code: "required"
            },
            messages: {
                name: form_enter_name,
                phone: form_enter_phone,
                //email: form_enter_email,
                captcha_code: form_error_captcha
            }
        });

2) В файле view/CartView.php
2.1) в блоке /*Валидация данных клиента*/ вместо строки

Код: Выделить всё

} elseif(!$this->validate->is_email($order->email, true)) {

пишем

Код: Выделить всё

} elseif(!empty($order->email) && !$this->validate->is_email($order->email, true)) {

2.2) Чтобы отменить отправку уведомления о заказе покупателю, если поле Email не заполнено, вместо

Код: Выделить всё

$this->notify->email_order_user($order->id);

пишем

Код: Выделить всё

                if(!empty($order->email)) {
                   $this->notify->email_order_user($order->id);
                }

3) В файле design/ваш_шаблон/html/cart.html убираем символ * в поле Email и добавляем в поле Номер Телефона
3.1) Вместо

Код: Выделить всё

<input class="form_input" name="email" type="text" value="{$email|escape}" data-language="form_email" placeholder="{$lang->form_email}*">

пишем

Код: Выделить всё

<input class="form_input" name="email" type="text" value="{$email|escape}" data-language="form_email" placeholder="{$lang->form_email}">

3.2) Вместо

Код: Выделить всё

               <input class="form_input" name="phone" type="text" value="{$phone|escape}" data-language="form_phone" placeholder="{$lang->form_phone}">

Пишем

Код: Выделить всё

               <input class="form_input" name="phone" type="text" value="{$phone|escape}" data-language="form_phone" placeholder="{$lang->form_phone}*">
Последний раз редактировалось makki 11.09.2017, 11:51, всего редактировалось 1 раз.
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS

korshunov
korshunov
Репутация: 99
Сообщения: 968
Зарегистрирован: 03.12.2015
С нами: 3 года 5 месяцев
Skype

Сообщение #2 korshunov » 11.09.2017, 11:33

Отлично, отлично! Простенько и со вкусом!

giv4ik90
giv4ik90
Репутация: 1
Сообщения: 2
Зарегистрирован: 02.12.2017
С нами: 1 год 5 месяцев

Сообщение #3 giv4ik90 » 02.12.2017, 23:01

Здравствуйте!
Еще чтобы номер телефона был обязательным для ввода можно:
2) В файле view/CartView.php
2.2) в блоке /*Валидация данных клиента*/ вместо строки:

Код: Выделить всё

 } elseif(!$this->validate->is_phone($order->phone)) {
                $this->design->assign('error', 'empty_phone');

пишем

Код: Выделить всё

 } elseif(!$this->validate->is_phone($order->phone, true)) {
                $this->design->assign('error', 'empty_phone');

kassio
kassio
Репутация: 0
Сообщения: 14
Зарегистрирован: 15.01.2018
С нами: 1 год 4 месяца

Сообщение #4 kassio » 24.01.2018, 18:06

makki, Не могли бы вы сделать эти действия для меня? Сам не осилю, а работу оплачу.

makki
makki
Репутация: 147
Сообщения: 418
Зарегистрирован: 12.08.2016
С нами: 2 года 9 месяцев
Откуда: Киев
Сайт Skype

Сообщение #5 makki » 24.01.2018, 18:44

Написал в личку
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS

miki
miki
Репутация: 2
Сообщения: 22
Зарегистрирован: 24.05.2018
С нами: 1 год

Сообщение #6 miki » 23.07.2018, 06:52

makki писал(а):и меняем содержимое условия if на следующее
КОД: ВЫДЕЛИТЬ ВСЁ

        $(".fn_validate_cart").validate({
            rules: {
                name: "required",
                phone: "required",
                //email: {
                //    required: true,
                //    email: true
                //},
                captcha_code: "required"
            },
            messages: {
                name: form_enter_name,
                phone: form_enter_phone,
                //email: form_enter_email,
                captcha_code: form_error_captcha
            }
        });


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

makki
makki
Репутация: 147
Сообщения: 418
Зарегистрирован: 12.08.2016
С нами: 2 года 9 месяцев
Откуда: Киев
Сайт Skype

Сообщение #7 makki » 24.07.2018, 06:08

miki писал(а):При этом, я так понимаю, если закомментировать только строчку required: true, то форма будет проверять email на правильность, если пользователь решил его все-таки ввести, оставляя его ввод опциональным изначально.
Да, если оставить проверку как в коде ниже, тогда будет проверка на стороне клиента помимо проверки на стороне сервера.

Код: Выделить всё

        $(".fn_validate_cart").validate({
            rules: {
                name: "required",
                phone: "required",
                email: {
                //    required: true,
                    email: true
                },
                captcha_code: "required"
            },
            messages: {
                name: form_enter_name,
                phone: form_enter_phone,
                //email: form_enter_email,
                captcha_code: form_error_captcha
            }
        });
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS


Название раздела: Полезные решения для OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Полезные решения для OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость