Оформление заказов Checkout

А уже обсуждали такую проблему?
Покупатель уже ранее зарегистрирован на сайте. Но при оформлении заказа он не залогинен. При попытке ввода своего email сайт выдает ошибку “такой email уже используется”. В результате покупатель не может оформить заказ и дальше действует одним из двух вариантов: 1) звонит или 2) уходит с сайта без покупки?

Другая CMS, которую используем, в любом случае дает оформить заказ. А в админке менеджер уже решает привязывать покупателя к существующему пользователю или оставить как есть.

В общем проблема серьезная и ее надо бы решить.

8 лайков

Уже не раз обсуждали и выкладывали код, решающий эту проблему. Проще самому исправить, чем ждать у моря погоды.

дайте ссылку, пожалуйста

В архиве два файла, нужно включить модуль “Мои изменения” и закинуть файлы в site.com/app/addons/my_changes/.

Помимо того, что сообщение о существующем покупателе не будет всплывать, будет еще срабатывать привязка заказа неавторизованного, но зарегистрированного покупателя к его учетной записи на основе проверки телефона/почты.

То есть если покупатель с почтой email@mail.com не вошел в учетку, но оформил заказ с этой почтой, то при следующем входе он увидит этот заказ в своем списке.

Будьте внимательнее, главное, чтоб у вас в my_changes не было уже файлов с таким же названием, как файлы в архиве, иначе затрется, если не совместить коды из файлов в один. Но если дописок не было кастомных, то все будет нормально.

my_changes.zip (861 Байт)

10 лайков

вот и ссылочка коль че

2 лайка

Спасибо! Помогло.

Но все равно такое нужно в базовой версии делать, без каких-либо доработок.

Увы, эти фичи можно и не дождаться.

За код и подсказки спасибо коллегам из темы @theangriestman

Кстати о стоимости и скорости доставки… они ведь подтягиваются из фида службы доставки модули которой есть внутри? Или нет? Кажется нет.

вопрос
если у пользователя не определился город автоматически по геолокации, он заходит на чекаут, то вместо способов доставки у него такая картина будет отображаться?

Пока так решили, вроде в февральской публикации новостей об этом упоминалось

Если город не определился, то подставляются данные из настройки “Местоположение покупателя по-умолчанию”:

Но это не точно.

У меня не получилось запустить, так и пишет. Кэш сбрасывал, тему менял. Чекаут бета.

Кстати как заменить эти ужасные огромные плашки с типами доставки и оплаты, на маленькие или вообще выпадающим сделать кто-то знает?

Тема и кэш на работу не влияют, достаточно просто файлы закинуть именно в папку в app/addons/my_changes и включить модуль “Мои изменения”. Код работает с новым и старым чекаутом.

Блоки на самом деле являются радиокнопками, на которые накинут CSS. Чтоб сделать выпадающим списком, надо шаблон переписывать.
Для правки размера можно и через CSS. Например, это:

.litecheckout__shipping-method {
  max-height: 90px;
  max-width: 120px;
}

даст такой результат:

image

3 лайка

Закинул, даже закоментил на всякий проверку на бустрап. Никакого эффекта…

Кстати… я тут опять вот ковырял чекаут в плане настройки, дошел до сопсобов оплаты и опять кровь из глаз.

Вот это как вообще? Клиент вводит данные карты прямо на сайте? А не на безопасном виджете или странице платежной системы? Серьезно?

Это еще из первых версий и заточено под зарубежный рынок – там такое практикуется (или практиковалось).

У нас да, такое не прокатит и так делать не надо)

Я к тому и веду. Это отдельный форум, отдельная сборка… поэтому неплохо бы отдельную стандартную поставку все таки как-то оптимизировать под РФ. А то я просто 2 час провел в админке убирая всякое г…но которое к рф продажам вообще никакого отношения не имеет.

1 лайк

Файлы из архива закинули?
Если код с форума копировали и вставляли вручную, надо кавычки проверять – для php это важно и с “неправильными” работать не будет.

Код точно рабочий, тут у py6etc получилось, и в самой теме, из которой код взят, о результатах работы писали.

1 лайк

Да, из архива кидал. Потом еще пробовал с форума вставить, но увидел что кавычки невалидные и не стал.

К сожалению, не подскажу, по какой еще причине может не работать.

Вот содержимое func.php, с которым у меня работает отключение оповещения о существующем аккаунте.

<?php

use Tygh\Registry;

if (!defined('BOOTSTRAP')) { die('Access denied'); }

function fn_my_changes_is_user_exists_post($user_id, $user_data, &$is_exist)
{
    if(Registry::get('runtime.controller') == 'checkout' && Registry::get('runtime.mode') != 'create_profile'){
        $is_exist = false;
    }
}

Вот init.php:

<?php

if (!defined('BOOTSTRAP')) { die('Access denied'); }

fn_register_hooks(
    'is_user_exists_post'
);

Попробуйте отсюда скопировать и вставить в соответствующие файлы содержимое, кавычки из поста должны быть валидны.

Проверил сейчас, заново создал файлы в my_changes и копипастнул код из этого поста – заказы пропускает.

3 лайка