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 — действительно спорный вопрос. Хотя на мой взгляд пользователь, оставивший добровольно свои контакты, никак не может быть лишним. Интересно Ваше мнение.