Интеграция Drupal с MailChimp для рассылок и сбора базы подписчиков
Всем привет! Сегодня речь пойдет о рассылках, которые с правильным подходом дают хороший профит. Для рассылок нужна база подписчиков, которых мы и будем собирать через готовые инструменты CMS Drupal. Рассказывать буду на примере этого блога.
Подозреваю, что многие с негативом относятся к слову «рассылка» и ассоциируют его в первую очередь со спамом. Но я вам скажу, что не надо всех грести под одну гребенку – рассылки могут быть белыми, пушистыми и даже полезными для получателей. В качестве инструмента рассылок я использую MailChimp, который и вам рекомендую. Если для вас это новый сервис, то можете ознакомиться с моим старым постом о том, как быстро начать работу в MailChimp. Сегодняшний же рассказ будет о том, как собирать базу подписчиков, используя CMS Drupal – давно планировал написание этого поста, но добрался до него только сегодня.
Создание списков MailChimp
Так как на блоге у меня две глобальные категории, то я решил, что лучшим решением будет вести две базы подписчиков – ведь не всем Drupal-разработчикам интересны новости из области SEO, как и наоборот. Одним из принципов «белой» рассылки является предоставление пользователю инструментов для самостоятельной подписки и отписки – это также необходимо учитывать.
Таким образом, через админку MailChimp было создано два списка:
- Подписчики блога Angarsky – Drupal;
- Подписчики блога Angarsky – SEO.
Модуль MailChimp
Для Drupal уже есть готовый модуль, обладающий всем необходимым функционалом (по крайней мере, для меня). Актуальная версия на момент написания поста – MailChimp 7.x-2.12. Для установки модуля и получения доступа ко всему необходимому функционалу вам потребуется:
- скачать и установить Libraries API;
- скачать и установить Entity API;
- скачать MailChimp ;
- также вам потребуется библиотека от самого сервиса MailChimp , ссылка на которую указана в README.txt модуля;
- о подключении сторонних библиотек к Drupal читайте по ссылке;
- после того, как все модули и библиотеки будут помещены в нужные директории проекта, включите модули MailChimp и MailChimp Lists.
Настройка модулей
Первым делом необходимо установить MailСhimp API Key на странице Global Settings
– откуда забрать ключик читайте на странице настроек. После этого у вас на странице вкладки Lists and Users должны появиться все списки, созданные в сервисе MailChimp (Currently Available MailChimp lists).admin/config/services/mailchimp
На той же странице Lists and Users нажимаем «Add a list» для добавления локального экземпляра списка, который будет управлять тем, что размещен на сервисе MailСhimp. Теперь смотрим скриншоты, читаем комментарии и делаем по аналогии.
Первая группа настроек – это выбор имени и описания списка для административных страниц, связывание с удаленным списком MailСhimp и настройка Merge Fields. Модуль подтягивает настройки полей списка с сервиса MailСhimp и предоставляет возможность программного заполнения. Из нового в Merge Fields у меня только поле UID, через которое я передаю ID пользователя. Для чего оно мне пока не знаю, но уверен, что пригодится.
Вторая группа – это настройка прав для ролей пользователя. Благодаря данным настройкам пользователи смогут подписываться на рассылку при регистрации, управлять подпиской на специальной вкладке своего аккаунта.
Третья группа – настройки для блока и формы подписки. В настройках отображения вы можете выбрать какие поля, кроме стандартного Email, предоставлять пользователю при оформлении подписки.
Все. После этих настроек на вашем сайте есть все необходимое для формирования базы подписчиков:
- блок с формой подписки для анонимных пользователей;
- возможность оформления подписки при регистрации пользователя;
- возможность для каждого пользователя управлять своей подпиской в настройках аккаунта.
Темизация
После настройки модуля не забудьте подправить переводы, если ваш сайт на русском языке. Также можете немного пошаманить с формой подписки, регистрации, если владеете навыком темизации Drupal. Например, я хочу, чтобы у меня при регистрации у пользователя по умолчанию были активными чекбоксы на подписку:
- /**
- * Implements hook_form_FORM_ID_alter().
- */
- function MY_MODULE_form_user_register_form_alter(&$form, &$form_state, &$form_id) {
- if (isset($form['mailchimp_lists'])) {
- // Делаем fieldset сворачиваемым.
- $form['mailchimp_lists']['#collapsible'] = TRUE;
- // Добавляем к fieldset свой класс.
- $form['mailchimp_lists']['#attributes']['class'][] = 'mailchimp-lists-wrapper';
- foreach (element_children($form['mailchimp_lists']) as $key) {
- if (isset($form['mailchimp_lists'][$key]['subscribe'])) {
- // Делаем чекбоксы активными по умолчанию.
- $form['mailchimp_lists'][$key]['subscribe']['#default_value'] = TRUE;
- }
- }
- }
- }
Также мне не нравится, что блок с формой подписки занимает много места. Ведь можно скрыть его описание и метки для полей, как минимум. Так как список у меня имеет машинное имя 'subscribe_drupal', то альтерить форму будем через следующую функцию:
- /**
- * Implements hook_form_FORM_ID_alter().
- */
- function MY_MODULE_form_mailchimp_lists_user_subscribe_form_subscribe_drupal_alter(&$form, &$form_state, &$form_id) {
- $children = element_children($form['mailchimp_lists']);
- $key = array_shift($children);
-
- if (isset($form['mailchimp_lists'][$key]['mergevars'])) {
- foreach ($form['mailchimp_lists'][$key]['mergevars'] as &$element) {
- // Скрываем метку поля.
- $element['#title_display'] = 'invisible';
- $required = !empty($element['#required']) ? ' *' : '';
- // Добавляем плейсхолдер.
- $element['#attributes']['placeholder'] = $element['#title'] . $required;
- }
- }
- }
Вот так-то, ребяты. Благодаря этому посту вы узнали, как собирать базу подписчиков для сервиса MailСhimp на Drupal сайте, а я в процессе написания настроил все это на своем блоге. Очень продуктивный пост!
Комментарии
Отличная статья!
Здравствуйте спасибо за полезную публикацию! помогите как можно вывести в блоке количество уже подписавшихся?
Добрый день! Спасибо за статью, а подскажите как сделать так, что если юзер подпишется и на друпал рассылку и на сео, что бы ему приходило одно письмо и с друпал новостями и с сео новостями!
Добавить комментарий