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

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

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

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

Все замечания учтены. Работоспособность проверена. Только OkayCMS 2
Мое скромное мнение, что на странице оформления заказа для незарегистрированных пользователей нет смысла делать обязательным поле 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)) {

2.2) вместо

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

} elseif(!$this->validate->is_phone($order->phone)) {

пишем

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

} elseif(!$this->validate->is_phone($order->phone, true)) {

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

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

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

пишем

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

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

3) В файле design/ваш_шаблон/html/cart.tpl убираем символ * в поле 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 2 (с 3-й и 4-й версией не работаю)

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

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

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

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

Сообщение #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
Сообщения: 16
Зарегистрирован: 15.01.2018
С нами: 6 лет 2 месяца

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

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

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

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

Написал в личку
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

miki
miki
Репутация: 3
Сообщения: 22
Зарегистрирован: 24.05.2018
С нами: 5 лет 9 месяцев

Сообщение #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 M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #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 2 (с 3-й и 4-й версией не работаю)

Artem-K
Artem-K
Репутация: 1
Сообщения: 17
Зарегистрирован: 03.08.2017
С нами: 6 лет 7 месяцев

Сообщение #8 Artem-K » 11.12.2019, 19:55

Всмем
makki писал(а):Мое скромное мнение, что на странице оформления заказа для незарегистрированных пользователей нет смысла делать обязательным поле 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)) {

2.2) вместо

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

} elseif(!$this->validate->is_phone($order->phone)) {

пишем

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

} elseif(!$this->validate->is_phone($order->phone, true)) {

2.3) Чтобы отменить отправку уведомления о заказе покупателю, если поле 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}*">
Всем привет! А кто-нибудь знает, как все это осуществить в третей версии?)

misterErr
misterErr
Репутация: 0
Сообщения: 1
Зарегистрирован: 15.03.2021
С нами: 3 года

Сообщение #9 misterErr » 15.03.2021, 21:36

Всем привет! А кто-нибудь знает, как все это осуществить в третей версии?)

Задание невыполнимо для третей версии? или может модуль за несколько тис есть?

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

звучит как анекдот:) но! okay-cms это реальность))

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #10 korshunov » 16.03.2021, 06:33

Выполнимо.

Есть модуль есть очень похожий. И даже бесплатный:
https://okay-cms.com/products/simplamarket_email_not_required

Модуль по ссылке делает лишь email необязательным. Если же надо непременно обязательным сделать поле телефон, то дорабатывать надо. Кстати говоря, указанный модуль существует довольно давно, у него уже 4 версии вышло. С учетом простоты задачи это говорит о том, что совсем нелегко модули создавать.

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #11 OkayCMS » 16.03.2021, 16:17

korshunov писал(а):Выполнимо.

Есть модуль есть очень похожий. И даже бесплатный:
https://okay-cms.com/products/simplamarket_email_not_required

Модуль по ссылке делает лишь email необязательным. Если же надо непременно обязательным сделать поле телефон, то дорабатывать надо. Кстати говоря, указанный модуль существует довольно давно, у него уже 4 версии вышло. С учетом простоты задачи это говорит о том, что совсем нелегко модули создавать.

В комментариях вы можете увидеть что последние две версии - это просто оптимизация модуля и обновление его до актуальной версии системы. Первая версия - это создание модуля, вторая, обновление до актуальной версии системы на тот момент и его фиксы. Не понимаю, почему это показывает что модули создавать нелегко.

виктор
виктор
Репутация: 4
Сообщения: 75
Зарегистрирован: 18.11.2017
С нами: 6 лет 4 месяца

Сообщение #12 виктор » 17.03.2021, 06:55

OkayCMS писал(а):
korshunov писал(а):Выполнимо.

Есть модуль есть очень похожий. И даже бесплатный:
https://okay-cms.com/products/simplamarket_email_not_required

Модуль по ссылке делает лишь email необязательным. Если же надо непременно обязательным сделать поле телефон, то дорабатывать надо. Кстати говоря, указанный модуль существует довольно давно, у него уже 4 версии вышло. С учетом простоты задачи это говорит о том, что совсем нелегко модули создавать.

В комментариях вы можете увидеть что последние две версии - это просто оптимизация модуля и обновление его до актуальной версии системы. Первая версия - это создание модуля, вторая, обновление до актуальной версии системы на тот момент и его фиксы. Не понимаю, почему это показывает что модули создавать нелегко.
а вы уверены, что для того что бы исправить ошибки нужно ставить новый модуль? может логичнее делать сразу правильно?

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #13 OkayCMS » 17.03.2021, 10:39

виктор писал(а):
OkayCMS писал(а):
В комментариях вы можете увидеть что последние две версии - это просто оптимизация модуля и обновление его до актуальной версии системы. Первая версия - это создание модуля, вторая, обновление до актуальной версии системы на тот момент и его фиксы. Не понимаю, почему это показывает что модули создавать нелегко.
а вы уверены, что для того что бы исправить ошибки нужно ставить новый модуль? может логичнее делать сразу правильно?

Если вы знаете хотя бы один продукт, который сделали сразу правильно и никогда не улучшали - покажите мне его.

sergeevizh
sergeevizh
Репутация: 17
Сообщения: 151
Зарегистрирован: 16.10.2016
С нами: 7 лет 5 месяцев

Сообщение #14 sergeevizh » 17.03.2021, 12:23

ох, а сделать бы еще проверку номера телефона по смс, цены ценной OkayCMS не было =)

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #15 OkayCMS » 17.03.2021, 13:58

sergeevizh писал(а):ох, а сделать бы еще проверку номера телефона по смс, цены ценной OkayCMS не было =)
А за смс кто платить будет?

виктор
виктор
Репутация: 4
Сообщения: 75
Зарегистрирован: 18.11.2017
С нами: 6 лет 4 месяца

Сообщение #16 виктор » 17.03.2021, 14:01

OkayCMS писал(а):
виктор писал(а):а вы уверены, что для того что бы исправить ошибки нужно ставить новый модуль? может логичнее делать сразу правильно?

Если вы знаете хотя бы один продукт, который сделали сразу правильно и никогда не улучшали - покажите мне его.
окай - отличная цмс, я с этим не спорю. но ведь этот вопрос идет со второй версии, темы на форуме тому доказательства. у меня на сайте сделала сначала симпла потом техподдержка. но сейчас еще два сайта запустил на 4 окае и все начинать по новой. когда же телефон станет главнее имейла?

Добавлено спустя 46 секунд:
sergeevizh писал(а):ох, а сделать бы еще проверку номера телефона по смс, цены ценной OkayCMS не было =)
не совсем понятна идея

sergeevizh
sergeevizh
Репутация: 17
Сообщения: 151
Зарегистрирован: 16.10.2016
С нами: 7 лет 5 месяцев

Сообщение #17 sergeevizh » 17.03.2021, 14:05

OkayCMS писал(а):
sergeevizh писал(а):ох, а сделать бы еще проверку номера телефона по смс, цены ценной OkayCMS не было =)
А за смс кто платить будет?
собственник магазина конечно же, накладывая сумму за пакет смс, на товары пропорционально
или
https://firebase.google.com/docs/auth/web/phone-auth

Добавлено спустя 4 минуты 54 секунды:
виктор писал(а):
OkayCMS писал(а):
Если вы знаете хотя бы один продукт, который сделали сразу правильно и никогда не улучшали - покажите мне его.
окай - отличная цмс, я с этим не спорю. но ведь этот вопрос идет со второй версии, темы на форуме тому доказательства. у меня на сайте сделала сначала симпла потом техподдержка. но сейчас еще два сайта запустил на 4 окае и все начинать по новой. когда же телефон станет главнее имейла?


sergeevizh писал(а):ох, а сделать бы еще проверку номера телефона по смс, цены ценной OkayCMS не было =)
не совсем понятна идея

идея авторизовывать покупателя в магазине без ввода пароля и e-mail
покупатель вводит номер мобильного в popup окне
скрипт генерирует случайную числовую комбинацию и записывает её в таблицу с покупателями, если такой номер телефона есть в базе, то приписывает к покупателю, если номер отсутствует создает запись с номером телефона и кодом
покупателю приходит смс с кодом, этот код вводим в popup окно после ввода номера, проверяем код из смс в базе, если верен, авторизовываем

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #18 makki » 18.03.2021, 04:29

sergeevizh писал(а):https://firebase.google.com/docs/auth/web/phone-auth
Firebase тут лишний. Система уже использует через composer php-библиотеку libphonenumber. Этого достаточно чтобы построить стандартную авторизацию через номер телефона. Ну и конечно не обойтись без смс шлюза, чтобы отправлять в смс пароль при запросе восстановления пароля. На 2й версии уже давно использую этот метод.
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

torele
torele
Репутация: 1
Сообщения: 4
Зарегистрирован: 12.03.2021
С нами: 3 года

Сообщение #19 torele » 20.03.2021, 16:07

Можно ли реализовать данный функционал на 4 версии?

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #20 makki » 20.03.2021, 16:32

torele писал(а):Можно ли реализовать данный функционал на 4 версии?
https://okay-cms.com/ua/products/simplamarket_email_not_required
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)


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

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


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

   

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

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

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