[informMe] Подписка на поступление товара

informMe даёт возможность пользователю подписаться на товар (или ещё что-то) которого нет в наличии, с уведомлением его при поступлении товара. Разрабатывался он под miniShop2, но должен работать со всеми ресурсами. Приглашаю на alpha-тестирование.

Логика

Подразумевается, что на сайте есть поле, в котором хранятся остатки товара (буду говорить про товары, так как с ними и работал), это может быть TV или кастомная колонка в таблице, допустим: ms2_products. Потом, в параметрах сниппета, это всё указывается. Об этом ниже.
При загрузки каталога товаров или карточки informMe смотрит в это поле и выводит ту или иную кнопку, в зависимости от наличия товара.



Далее все действия происходят в модальном окне.




Если пользователь не авторизован и это его первая подписка, пока жива сессия, informMe запросит подтверждение Email — реализовал через отправку ключа на указанную почту.






Дальнейшие подписки происходят без подтверждения почты.

Параметры сниппета informMe

Этот сниппет служит для вывода кнопок: В корзину/Сообщить о поступлении.

  • &class — Класс таблицы БД с товарами. По умолчанию: msProduct.
  • &frontendCss — Путь до файла со стилями
  • &frontendJs — Путь до JS-файла
  • &id — ID ресурса, если пусто — текущий ресурс. По умолчанию: Текущий ресурс.
  • &includeTVs — Список имён дополнительных полей, через запятую, значения которых нужно получить. Значения запишутся в плейсхолдеры: [[+tvname]]
  • &tpl — Чанк вывода кнопки. По умолчанию: informMeButtonTpl
  • &tplEmailKey — Чанк письма с ключом для отправки подписчику. По умолчанию: informMeEmailKeyTpl
  • &tplEmailSupple — Чанк письма об успешной подписки. По умолчанию: informMeEmailSuppleTpl
  • &tplError — Чанк вывода ошибок. По умолчанию: informMeErrorTpl
  • &tplForm — Чанк формы подписки. По умолчанию: informMeFormTpl
  • &tplKey — Чанк формы для ввода ключа. По умолчанию: informMeKeyTpl
  • &tplModal — Чанк с модальным окном. По умолчанию: informMeModalTpl
  • &tv — Для хранения остатков используется TV? По умолчанию: Нет
  • &tvId — Если параметр &tv установлен в «Да», то здесь нужно указать ID дополнительного поля который хранит остатки товара
  • &value — Если для хранения остатков используется колонка в таблице БД, здесь необходимо указать её название. Например в «value» хранятся значения TV полей. По умолчанию: value
  • &valueClass — Класс таблицы БД, где хранятся остатки. Если параметр &tv установлен в «Нет», этот параметр игнорируется. По умолчанию: msProductData

Примеры

Минимальный вызов для товаров miniShop2, на стр. каталога:

[[!informMe?
	&id = `[[+id]]`
        &value = `balance` <!-- Колонка в таблице ms2_products с остатками -->
]]

Тестирование

Разрабатывать я его начал ещё летом, но как говорится — чем дальше в лес, тем толще партизаны. Очень много нюансов, по мере разработки, начали появляться.
Поэтому, приглашаю всех желающих на тестирование — пакет находится в стадии alpha.
Чтобы начать тестировать — получите ключ, не покупая пакет, и пришлите его мне на marat@marabar.ru. Не забудьте указать имя пользователя на modstore.pro — администрация откроет вам доступ к пакету.

Или поддержите проект, купив компонент.

Что нужно доработать, как мне кажется:
  1. Смена кнопки после подписки на «Подписан», при нажатии на которую предлагать отписаться или изменить кол-во.
  2. Вывод в админ. части общего кол-ва требуемых товаров без привязки к пользователю, по убыванию.
И самое основное — оповещение:
  1. Вешать на событие сохранения ресурса — не сработает, если во время импорта пишется сразу в БД
  2. Крон — забывчивость, после смены хостинга. Хотя, как часто они меняются...
  3. Ручное управление
В общем все желающие, как только компонент станет доступен в modstore.pro, приглашаю на тестирование.
Марат Марабар
07 декабря 2016, 19:36
modx.pro
6
3 287
+12
Поблагодарить автора Отправить деньги

Комментарии: 5

Виталий Киреев
08 декабря 2016, 12:50
+4
Зачем обязательное имя и количество? Если клиент введет, допустим 2, то если товар 1, то ему никогда не придет оповещение и даже этот 1 товар ему не продадите.
По подтверждению емейла тоже сложно, вводить там что-то… Просто ссылку с кодом пихайте в письмо и в плагине на событие обработки запроса обрабатывайте.

Так и каким в итоге способом происходит оповещение?
    Марат Марабар
    08 декабря 2016, 19:43
    0
    А это наследие от клиента, который заказывал этот компонент а потом переключил меня на другое.
    Я ещё много вырезал, там и контроль остатков был, и оповещение менеджеру о статусе кол-ва «Ноль», и возможность разрешать подписку тем или иным (авторизован/не авторизован), и возможность выбора проверки адреса почты с подтверждением или через проверку записи DNS… (не помню, это я сам придумал или он заказывал, точно знаю — что ему нужен был реальный адрес почты — всё сразу пишется в рассылку (Sendex), любитель, умеренно, поспамить, просто))), ну и т.д.

    Зачем обязательное имя и количество?
    Имя нужно для обращения к человеку посредством обратной связи — это правильно, мне кажется.
    Количество: оно не обязательно, можно вырезать из формы — будет один всегда. Замысел был такой: ведётся учёт всех ожидающих товар, с выводом в бекенд, где в первую очередь показываются самые востребованные — статистика, одним словом.

    Если клиент введет, допустим 2, то если товар 1, то ему никогда не придет оповещение и даже этот 1 товар ему не продадите.
    Так вот для этого и нужно кол-во предполагаемой покупки. Всё правильно, как мне кажется, — зашёл менеджер в таблицу ожидаемых товаров, накинул сверху n-ое кол-во и отдал в отдел поставок (ну или заказал/купил) — разослал уведомления потенциальным заказчикам.

    Просто мы, наверное, разные вещи подразумеваем, — ведь товар может быть не только розничный, но и оптовый.
    Да даже если и розничный, в штуках, ведь, не всё меряется, допустим в строительстве…

    Так и каким в итоге способом происходит оповещение?
    Пока ни каким, поэтому и alpha-тестирование.

    У меня есть мысли по поводу оповещения, как со стороны заказчика, так и от себя.
    Хотелось бы услышать разработчиков, работающих со своими клиентами — их мысли, чтобы этот компонент был максимально универсален.
    Stan Ezersky
    08 декабря 2016, 14:02
    +2
    Проще делал:
    в таблице товаров есть поле «Наличие», оно может быть «Да» или «Нет». Соответственно, при проверке этого поля показываю пользователю или кнопку «купить», или кнопку «уведомить о товаре». При нажатии «уведомить о товаре» всплывает окошко с вводом почты и именем. Всё. У меня только автоматизации нет, просьба клиента — всё с вручную (товар вообще может быт снят с продажи при отсутствии). Всё встроенными средствами делается.

    Работа с tv как-то в minishop2 не комильфо
    Зачем количество?
    Что такое ключ и для чего он?
    Для чего подтверждение?
      Марат Марабар
      08 декабря 2016, 19:53
      0
      Работа с tv как-то в minishop2 не комильфо
      В компоненте есть выбор, или использовать TV, или кастомную колонку в таблице miniShop2, если это для miniShop2.

      По остальным вопросам ответил выше, спасибо за вопросы!
      Андрей
      13 января 2021, 15:51
      0
      Где можно скачать? В modstore.pro не нашел…
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        5