Shop-Script 5: хак для брошенных корзин

18 декабря 2013

Актуально для плагина "Брошенные корзины" версии 0.0.2. В следующих версиях реализована отправка любым покупателям, заполнившим контактные данные.

Плагин "Брошенные корзины для Shop-Script 5" отсылает автоматические напоминания на почту зарегистрированным пользователям через заданное количество часов после последнего добавления товара в корзину.

К сожалению, интернет магазин на Shop-Script 5 не сохраняет контакты пользователя не оформившего заказ. Т.е. если был пройден первый шаг "Контактная информация", но дальше покупатель не пошёл, данные в базу не будут записаны. Поэтому отсылать уведомление некуда.

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

После внедрения хака, покупатель будет сохранён как контакт сразу после заполнения контактной информации. (В противном случае контакт сохраняется только после оформления заказа. Соответственно, речи о брошенных корзинах идти не может.)

Все остальные функции должны работать как обычно.

Возможны конфликты с плагинами, которые влияют на оформление заказа

Не тестировалось для 5.2.1

Итак, нужно отредактировать 3 файла:

  1. wa-apps/shop/lib/actions/frontend/shopFrontendCheckout.action.php:

    Убрать строчку 169:
    $contact = $this->getUser()->isAuth() ? $this->getUser() : $checkout_data['contact'];
    Вместо неё:
    $contact = $this->getUser()->isAuth() ? $this->getUser() : new waContact($checkout_data['contact']);

     

  2. wa-apps/shop/lib/classes/checkout/shopCheckout.class.php:

    Убрать строчку 35:
    $contact = $this->getSessionData('contact');
    Вместо неё:
    $contact_id = $this->getSessionData('contact');
    $contact = new waContact($contact_id);

     

  3. wa-apps/shop/lib/classes/checkout/shopCheckoutContactinfo.class.php:

    Убрать строчку 99:
    $this->setSessionData('contact', $contact);
    Вместо неё:
    $contact->save();
    $this->setSessionData('contact', $contact->getId());

    $cart = new shopCart();
    $code = $cart->getCode();
    $cart_items_model = new shopCartItemsModel();
    $cart_items_model->updateByField('code', $code, array('contact_id' => $contact->getId()));

     

Всё :)

На Гитхабе есть данный хак в виде Pull request. Для просмотра нужен доступ к репозиторию.

Внедрение данной функциональности в ядро Shop-Script 5 — действительно спорный вопрос. Хотя на мой взгляд пользователь, оставивший добровольно свои контакты, никак не может быть лишним. Интересно Ваше мнение.

22 комментария

  • Юрий Ефимов 18 января 2014 00:07
    "Внедрение данной функциональности в ядро Shop-Script 5 — действительно спорный вопрос. Хотя на мой взгляд пользователь, оставивший добровольно свои контакты, никак не может быть лишним.

    Считаю одним из важных пунктов для работы с клиентами. Сам лично проверял на себе что настойчивость позволяет завершить покупку.
    О такой доработке мечта на старом вебасисте. но цена реализации всегда пугала.
  • Олег Легостаев 22 января 2014 10:30
    Вот что интересно. у меня в магазине контакты плодятся, хотя заказы эти люди не делали.
    откуда они берутся?
    • Eugen Nichikov Hardman 22 января 2014 13:01
      Возможно, плагины? Обратная связь, звонок и т.п.
      Официальная позиция разработчиков: не сохранять контакты до оформления заказа.
  • Иван Чернявский 27 января 2014 16:02
    Контакт не сохраняется при нажатии на "Далее" после ввода данных? Например, выбор доставки и оплаты идет после ввода контактных данных.

    Возможно разработчики согласятся сохранять данные после перехода на следующий шаг оформления заказа, если для них это так критично...
    • Eugen Nichikov Hardman 27 января 2014 16:16
      Нет. Контакт не сохраняется. Все данные хранятся в сессии.

      Официальный ответ разработчиков Shop-Script 5:
      > Окончательное решение: отказать, в базовой версии это нельзя делать.
      > В будущем появится возможность реализовать это плагином.
  • Pavel 30 января 2014 12:54
    Еще бы не помешало отправлять уведомление если пользователь был залогинен и добавил что то в корзину. И еще после хака почемуто очень долго открываются заказы в бекенде, и статус меняется очень медлено. Что может быть?
    • Pavel 30 января 2014 12:55
      Тоесть не начал оформлять.
    • Eugen Nichikov Hardman 30 января 2014 15:33
      Сейчас для зарегистрированных пользователей так и отправляет (через указанное кол-во времени после добавления последнего товара в корзину).

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

      По-идее хак никак не должен влиять на бекенд. "Вмешательство" только при оформлении заказа. В других разделах всё работает как раньше.
      • Pavel 30 января 2014 16:35
        был залогинен, добавил товар в корзину, уведомление так и не пришло.
        Может и за того что я в название добавил Имя с подсказки.
        и незнаю почему, но некоторые заказы приходять с контактамы администратора за сегодня штук 10.
        • Pavel 30 января 2014 16:36
          По времени разорбрался, это и заплагина допинфо.
        • Eugen Nichikov Hardman 30 января 2014 16:51
          Посмотрите таблицу shop_carts_plugin_log в БД.
          Если отправка писем происходила, будет запись в лог.
          Возможно письма просто не были доставлены.
  • Pavel 30 января 2014 17:14
    А как быть с заказами с контактами админа?.. Убрал хак, перестали падать.
    • Eugen Nichikov Hardman 30 января 2014 18:05
      Ответил на почту.
  • Павел Иванов 20 февраля 2014 12:45
    После установки хака перестал работать гео плагин. Как можно это исправить?
    • Eugen Nichikov Hardman 20 февраля 2014 16:27
      Здравствуйте, Павел.
      Вы об этом плагине: http://www.webasyst.ru/store/plugin/shop/geoip/ ?
      Я не являюсь его разработчиком, но попробую посмотреть, что можно сделать.
      • Павел Иванов 21 февраля 2014 17:35
        Да о нём. Очень хочется пользоваться ваши плагином, но так же и не хочется терять возможность автозаполнения поля регион.
        • Eugen Nichikov Hardman 22 февраля 2014 02:38
          Огромное Вам спасибо, Павел! Вы невероятно помогли :)
          Хак фтопку, можете оставить чистый плагин для отправки уведомлений зарегистрированным пользователям. Сегодня новая версия отправлена на модерацию. В ней хак не нужен.
  • Alex Voloshchuk 27 февраля 2014 13:28
    Есть новости по модерации?
    Плагин есть рабочий без хака? Готов купить.
    Спасибо
    • Eugen Nichikov Hardman 3 марта 2014 14:27
      Сегодня вышла новая версия.

Написать комментарий