Страница 1 из 2

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

Добавлено: 11.09.2017, 10:18
makki
Все замечания учтены. Работоспособность проверена. Только 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}*">

Добавлено: 11.09.2017, 11:33
korshunov
Отлично, отлично! Простенько и со вкусом!

Добавлено: 02.12.2017, 23:01
giv4ik90
Здравствуйте!
Еще чтобы номер телефона был обязательным для ввода можно:
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');

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

Добавлено: 24.01.2018, 18:44
makki
Написал в личку

Добавлено: 23.07.2018, 06:52
miki
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 на правильность, если пользователь решил его все-таки ввести, оставляя его ввод опциональным изначально.

Добавлено: 24.07.2018, 06:08
makki
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
            }
        });

Добавлено: 11.12.2019, 19:55
Artem-K
Всмем
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}*">
Всем привет! А кто-нибудь знает, как все это осуществить в третей версии?)

Добавлено: 15.03.2021, 21:36
misterErr
Всем привет! А кто-нибудь знает, как все это осуществить в третей версии?)

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

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

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

Добавлено: 16.03.2021, 06:33
korshunov
Выполнимо.

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

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

Добавлено: 16.03.2021, 16:17
OkayCMS
korshunov писал(а):Выполнимо.

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

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

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

Добавлено: 17.03.2021, 06:55
виктор
OkayCMS писал(а):
korshunov писал(а):Выполнимо.

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

Добавлено: 20.03.2021, 16:07
torele
Можно ли реализовать данный функционал на 4 версии?

Добавлено: 20.03.2021, 16:32
makki
torele писал(а):Можно ли реализовать данный функционал на 4 версии?
https://okay-cms.com/ua/products/simplamarket_email_not_required