tessa 31 января 2015 0 11
Добрый день!
Переделал свой интернет магазин на базе вашего shopModx, но когда уже все было завершено столкнулся с такой проблемой.
У меня на сайте нет регистрации пользователей. Но, если клиент с одним и тем же электронным адресом оформляет разные заказы, система выдает предупреждение, что такой e-mail уже существует и нужно зарегистрироваться.
Я нашел вашу рекомендацию поменять параметр protected $allowGetUserByEmail = false; на true, все заработало, но появилась другая проблема.
Заказы стали добавляться, но телефон клиента ( с одинаковым e-mail) в панеле «управления заказами» оставался один и тот же. А бывают случаи, когда клиент делает первый заказ, пишет телефон, потом делает второй заказ, но телефон пишет другой (так как например в поле «адрес» и «коментарии»), но в панеле управления телефон один и тот же.
Мне подсказали, что в базовом варианте сборки в объекте заказа хранится только айдишник клиента, оформившего заказ. Согласно нему и выводится номер телефона. Необходимо модифицировать модель заказа, чтобы можно было хранить номер телефона прямо в заявке и при создании новых ордеров записывать туда соответствующие номера телефонов.
Но, как это сделать я так и не понял.
Можно ли от вас получить помощь в реализации этой задачи?

На самом деле этот вопрос актуален для многих пользователей, так как многие не имеют регистрации пользователей на сайте. А в базовой версии хорошо бы было сделать две версии ( с регистрацией и без регистрации) как во многих движках интрнет магазинов.
11 комментариев
Fi1osof1
Fi1osof 31 января 2015г в 19:34 #
Измените вот этот параметр с false на true. Поможет.
t
tessa 31 января 2015г в 19:53 #
Здравствуйте, Николай!
Дело в том, что данный параметр я изменил и теперь предупреждение не появляется, и заказы от одного клиента (с одинаковым e-mail) добавляются.
Проблема в том, что если один и тот же клиент напишет разные номера телефонов в разных заказах, то администратор интернет магазина, т.е я, будет видеть только один телефон тот, который этот клиент забил в первый раз.
Например: я сделал первый заказ, оформил его, мой e-mail: test@mail.ru, номер телефона 111-11-11, затем я сделал второй заказ с тем же e-mail: test@mail.ru, но номер телефона теперь другой: 222-22-22, этот заказ был принят
Но, в «панеле управления заказами» администратор увидит эти два разных заказа, но с номером телефона 111-11-11 и этот номер теперь привязан к e-mail:test@mail.ru
Как сделать так, чтобы менялся номер телефона в разных заказах от клиента с одинаковым e-mail?
Fi1osof1
Fi1osof 01 февраля 2015г в 13:58 #
В beforeSave() получения объекта заказчика можете переписать вместо $this->getContractor():
if (
    $contractor =  $this->getContractor()
    AND $phone = $this->getProperty('phone')
){
    $contractor->Profile->phone = $phone;
    $contractor->setDirty();
}
t
tessa 02 февраля 2015г в 10:58 #
Спасибо большое Николай, теперь все работает.
Fi1osof1
Fi1osof 02 февраля 2015г в 11:11 #
Пожалуйста.
А
Андрей Балкин 13 августа 2015г в 14:17 #
Добрый день Николай, а подскажите алгоритм действий, чтобы наоборот запретить заказывать без полной регистрации
А
Андрей Балкин 13 августа 2015г в 14:20 #
Причем чтобы это разумеется только в чекаунте проявлялось. Добавил в корзину и при подтверждении заказа если не авторизирован — предлагалась форма регистрации
Fi1osof1
Fi1osof 13 августа 2015г в 14:27 #
Простейший способ: в шаблоне прописать условие
{if !$modx->user->id}
    .... 
{else}
    .... 
{/if}
А
Андрей Балкин 13 августа 2015г в 14:51 #
мне нужно замаскировать регистрацию, как бы сделать это все из чекаунта, чтобы его не перекидывало на страницу регистрации если он не зарегистрирован. это выходит и шаблон и процессор переопределять придется, чтобы у пользователя не только имя и почта в бд добавлялась но и пароль
Fi1osof1
Fi1osof 13 августа 2015г в 14:54 #
Андрей, я дал направление, а вы уже развивайте под свои нужды. И если вопросы еще есть — создавайте отдельную тему и там спрашивайте. Не стоит флудить, ведь все уведомления идут топикстартеру, а это уже оффтоп.
А
Андрей Балкин 13 августа 2015г в 14:55 #
Ок спасибо
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.