Как сделать необязательным поле email в miniShop2?
Всем привет!
Я уже несколько раз использовал miniShop2 в своих сайтах, но сейчас первый раз использую корзину и оформление заказа.
Столкнулся с тем, что заказ привязывается к пользователю MODx, привязывание идет по email (это делает метод getCustomerId в основном классе miniShop).
А у меня магазин специфичный, заказы редкие, у половины клиентов нет email, это вообще не обязательное поле.
Я сейчас сижу и думаю, в принципе меня наверное устроило бы изменить механизм работы метода getCustomerId, что бы он пользователя генерил не по email, а каждый раз просто нового, в качестве логина используя к примеру текущее время.
Как красиво сделать email необязательным полем? Без правки исходников.
Я уже несколько раз использовал miniShop2 в своих сайтах, но сейчас первый раз использую корзину и оформление заказа.
Столкнулся с тем, что заказ привязывается к пользователю MODx, привязывание идет по email (это делает метод getCustomerId в основном классе miniShop).
А у меня магазин специфичный, заказы редкие, у половины клиентов нет email, это вообще не обязательное поле.
Я сейчас сижу и думаю, в принципе меня наверное устроило бы изменить механизм работы метода getCustomerId, что бы он пользователя генерил не по email, а каждый раз просто нового, в качестве логина используя к примеру текущее время.
Как красиво сделать email необязательным полем? Без правки исходников.
Комментарии: 23
Не знаю. Наверное, только так.
И сразу второй вариант: генерируй случайный email и вставляй в заказ плагином при его создании. Каждый раз будет новый юзер.
Ну и учти, что сегодня-завтра выйдет личный кабинет для покупателей MS2 — там тоже все через email. Можно будет установить на любой существующий магазин, и любой покупатель сможет войти и посмотреть свои старые заказы.
Юзеры со случайными email такой возможности иметь не будут.
Ну и учти, что сегодня-завтра выйдет личный кабинет для покупателей MS2 — там тоже все через email. Можно будет установить на любой существующий магазин, и любой покупатель сможет войти и посмотреть свои старые заказы.
Юзеры со случайными email такой возможности иметь не будут.
Спасибо!
В целом я уже решил вопрос. Я отнаследовался от msOrderHandler, скопировал в мой класс метод submit, убрал в нем из обязательных полей email, и перенес модернизированную функцию getCustomerId в него же.
НУ а магазины бывают разные, товары специфические. У меня например 1 пользователь с вероятностью 99,99% совершит только 1 покупку.
В целом я уже решил вопрос. Я отнаследовался от msOrderHandler, скопировал в мой класс метод submit, убрал в нем из обязательных полей email, и перенес модернизированную функцию getCustomerId в него же.
НУ а магазины бывают разные, товары специфические. У меня например 1 пользователь с вероятностью 99,99% совершит только 1 покупку.
Алексей, столкнулся с такой же проблемой. Можно поподробнее о том как вы изменили класс submit и в каком сниппете меняли инициализацию расширенного класса?
Зачем такие сложные телодвижения, если можно сделать емейл скрытым, и в value написать "[[!time]]@zxzx.com", а в time —
return time();
можно сделать и так, как вариант. Но хотелось бы сделать нормально через наследование, т.к. мне, помимо того, что надо сделать мыло необязательным полем, надо телефон сделать обязательным.
В таком случае, заказы будут отправляться на случайные несуществующие адреса, а хостинг за это заблокирует отправку писем с сайта, приняв за спам-рассылку.
Ребята, Василий подскажите пожалуйста (может есть у кого готовое решение) как отключить проверку? Хочет человек укажет почту, не хочет ну и не надо. У меня товары, которые бывает и бабушки покупают. Не смотря на то, что они умеют пользоваться интернетом, они почему-то не пользуются электропочтой.
Василий, очень прошу, помоги отключить обязательную проверку почту. Я посмотрел и minishop2.class.php, и msorderhandler.class.php, но для меня это все пока очень сложно.
Василий, очень прошу, помоги отключить обязательную проверку почту. Я посмотрел и minishop2.class.php, и msorderhandler.class.php, но для меня это все пока очень сложно.
Привет. Вот смотри:
1. В системной настройке ms2_order_handler_class указываем myOrderHandler
2. Создаем файл core/components/minishop2/custom/order/myOrderHandler.class.php
3. В него код:
Можешь посмотреть исходный msOrderHandler и переопределить в нем другой метод, например, где идет проверка email.
1. В системной настройке ms2_order_handler_class указываем myOrderHandler
2. Создаем файл core/components/minishop2/custom/order/myOrderHandler.class.php
3. В него код:
<?
class myOrderHandler extends msOrderHandler{
public function submit($data = array()) {
if(empty($data['email'])){
$data['email'] = uniqid('user_').'@MYSITE.ru';
}
return parent::submit($data);
}
}
Это один из вариантов. Мы просто при отправке заказа, если пользователь не указал почту, генерируем случайный email.Можешь посмотреть исходный msOrderHandler и переопределить в нем другой метод, например, где идет проверка email.
Спасибо большое, Алексей!
То, что нужно.
То, что нужно.
К сожалению не выходит. Ломается работа минишопа, ни одна кнопка отрпавки данных, будь то из каталога, карточки или же корзины, не работает. Уже об отправке формы и речь не идет. Может связанно с обновлением минишопа, времени то прошло не мало, а вопрос актуален.
«Александр Котлов» нормальный вариант предложил. Это как-бы тоже самое.
А сейчас да, насколько я понял, этот вариант, под которым вы отписались — не актуален.
А сейчас да, насколько я понял, этот вариант, под которым вы отписались — не актуален.
Хотя я проверил — всё работает с этим кодом. Мож чёт не так делаешь?)
Пашок, спасибо за ответ. Если бы здесь было чаво делать? да и проверил не один (почти десяток) раз. ФОкус в том что ломается работа не только форм, всего минишопа.
Здравствуйте. У меня тоже все ломается после того как я прописал класс обработчика myOrderHandler. У вас получилось решить этот момент?
Возможно ли сделать проверку на определенный метод доставки?
Можно в этой конструкции
<?
class myOrderHandler extends msOrderHandler{
public function submit($data = array()) {
if(empty($data['email'])){
$data['email'] = uniqid('user_').'@MYSITE.ru';
}
return parent::submit($data);
}
}
как-то оставить поле email незаполненным при оформлении заказа?
Может кто-нибудь уже придумал нормальный способ отключения обязательного поля Email?
Добавить скрытое поле с заданным email'ом:
<input id="email" placeholder="Email" name="email" value="ya@ya.ru" class="form-control required" type="hidden">
В последней версии уже есть из коробки — [miniShop2] Версия 2.4.15.
Новая версия miniShop2 — основное изменение затрагивает работу с пользователем заказа, поле ПОЧТА становится НЕ ОБЯЗАТЕЛЬНЫМ!
Да, поле необязательно. Но создается автоматом фейковый email, на который безуспешно отправляется заказ, что приводит к блокировке по спаму.
Не появилось решение? У меня теперь все в спам с ошибкой sendmail попадает( А нормальную работу без почты сделать так и не могу(
А, это мне mail.ru блочило. Добавление dmarc решило проблему
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.