Shop-Script 5: хак для брошенных корзин
Актуально для плагина "Брошенные корзины" версии 0.0.2. В следующих версиях реализована отправка любым покупателям, заполнившим контактные данные.
Плагин "Брошенные корзины для Shop-Script 5" отсылает автоматические напоминания на почту зарегистрированным пользователям через заданное количество часов после последнего добавления товара в корзину.
К сожалению, интернет магазин на Shop-Script 5 не сохраняет контакты пользователя не оформившего заказ. Т.е. если был пройден первый шаг "Контактная информация", но дальше покупатель не пошёл, данные в базу не будут записаны. Поэтому отсылать уведомление некуда.
Есть небольшой хак для тех, кому вопрос возврата покупателей действительно важен. С обновлениями, естественно, несовместим.
После внедрения хака, покупатель будет сохранён как контакт сразу после заполнения контактной информации. (В противном случае контакт сохраняется только после оформления заказа. Соответственно, речи о брошенных корзинах идти не может.)
Все остальные функции должны работать как обычно.
Возможны конфликты с плагинами, которые влияют на оформление заказа
Не тестировалось для 5.2.1
Итак, нужно отредактировать 3 файла:
-
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']);
-
wa-apps/shop/lib/classes/checkout/shopCheckout.class.php
:Убрать строчку 35:$contact = $this->getSessionData('contact');
Вместо неё:$contact_id = $this->getSessionData('contact');
$contact = new waContact($contact_id); -
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 комментария
Считаю одним из важных пунктов для работы с клиентами. Сам лично проверял на себе что настойчивость позволяет завершить покупку.
О такой доработке мечта на старом вебасисте. но цена реализации всегда пугала.
откуда они берутся?
Официальная позиция разработчиков: не сохранять контакты до оформления заказа.
Возможно разработчики согласятся сохранять данные после перехода на следующий шаг оформления заказа, если для них это так критично...
Официальный ответ разработчиков Shop-Script 5:
> Окончательное решение: отказать, в базовой версии это нельзя делать.
> В будущем появится возможность реализовать это плагином.
Для незалогиненных посетителей нет возможности получить контакты, кроме как начало оформления заказа.
По-идее хак никак не должен влиять на бекенд. "Вмешательство" только при оформлении заказа. В других разделах всё работает как раньше.
Может и за того что я в название добавил Имя с подсказки.
и незнаю почему, но некоторые заказы приходять с контактамы администратора за сегодня штук 10.
Если отправка писем происходила, будет запись в лог.
Возможно письма просто не были доставлены.
Вы об этом плагине: http://www.webasyst.ru/store/plugin/shop/geoip/ ?
Я не являюсь его разработчиком, но попробую посмотреть, что можно сделать.
Хак фтопку, можете оставить чистый плагин для отправки уведомлений зарегистрированным пользователям. Сегодня новая версия отправлена на модерацию. В ней хак не нужен.
Плагин есть рабочий без хака? Готов купить.
Спасибо