Собственно, решение само описывать смысла нет, работу вы его можете посмотреть по ссылке выше. Опишу здесь краткую установку и пару фишек.
1. После установки модуля кидаем компонент из папки "Сервисы / Рассылки" в нужное место шаблона сайта, кастомизируем шаблон, если требуется, и все готово. В настройках компонента указываем на какие рубрики хотим подписаться. Кстати, можно указывать и скрытые (системные) рубрики.
По поводу галочки "Подключить jQuery" - ее надо ставить только если вы определенно уверены, что на сайте не стоит такой баблиотеки. Можно проверить работу компонента сначала без этой галочки.
2. После нажатия на кнопку, на e-mail уходит стандартное письмо для подтверждения подписки.
3. А теперь тот самый хитрый финт. Изначально компонент создался для сайта, где нет кабинета управления подписки - надо просто при переходе по ссылке из письма подтвердить мыло и все, выведя стандартное сообщение
3.1. Это я решил с помощью системного компонента bitrix:subscribe.edit, просто вырезав из шаблона все лишнее и оставив только вывод успешных сообщений (настройки все стандартные) (идея проста - компонент подтвердит мыло при заходе на него по ссылке с кодом)
3.2. Вам осталось поправить почтовый шаблон "Подтверждение подписки", убрав там лишнюю информацию. По сути, оставив ту самую ссылку для подтверждения.
И вот перед нами простой и прозрачный механизм подписки.
4. Для такой же удобной и простой отписки, пожалуй, порекомендую данное решение.
Страничка описанного решения в Маркете. Пока оно на модерации, можно установить на сайт по данной ссылке: вашсайт.ру/bitrix/admin/update_system_partner.php?addmodule=asd.subscribequick
Да. Пару словечек о второй части сабжа - в компоненте показан пример как реализовать ситуацию для обработки данных не только напрямую (без ajax), но и при ajax-обработке, абсолютно не делая лишней работы. Там же показан пример защиты передаваемых данных, чтобы их нельзя было подделать.
Антон, на многосайтовости корректно работает? Пока не пойму я напутал что-то или ошибка. Выбрал рубрику второго сайта (многосайтовость на разные директории) а в таблице b_event у события sudcribe_confirm выставляется первый сайт (s1)
Дмитрий, хороший вопрос, скорее всего глюк реально есть. Ведь папка /bitrix/ (куда идет ajax-запрос) считается по умолчанию папкой первого сайта, и именно там происходит отправка почты. Можете сделать следующие исправления, и если все будет работать, я выпущу обновления?
1. В action.php компонента после define('PUBLIC_AJAX_MODE', true); вставить этот код:
if (!defined('SITE_ID') && isset($_POST['site_id'])) {
define('SITE_ID', trim($_POST['site_id']));
}
2. В шаблоне вставить такое доп.поле среди прочих hidden:
У меня проблема: Есть два сайта - RU и EN. Русский сайт - в корне домена, английский в папке /en/. Ставлю ваш компонент. В русском сайте всё хорошо работает. А в английском сайте сообщения об успешном добавлении выводятся на русском языке. Хотя для того сайта установлен английский язык.
Пожалуйста, в папке bitrix/components/asd/subscribe.quick.form/lang/en/ файлики переведите на англ. язык. А то получается, что когда переводишь - делаешь патч компонента
Хан Эрли, у меня простой принцип - если идеально не знаешь язык, не лезь переводить это я про себя. А переводчика на кучу бесплатных компонент не могу пока позволить. Так что советую вам все же кастомизировать компонент, дабы не затереть (если принципиально). Но учту все же перевод конечно.
То есть, сейчас с переводом все ок в такой конфигурации?
Есть небольшой глюк, если устанавливать несколько модулей (1й подписывает на 1 рассылку, а 2й на 2ю), то после подписки на хотя бы на 1 из рассылок на другие уже не подписаться. Пишет, что e-mail уже существует. Надо делать проверку на почтовый адрес и потом уже на "Список рассылок" и если не подписан, то подписывать, иначе алерт.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».