Интеграция Drupal с MailChimp для рассылок и сбора базы подписчиков

Интеграция 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 admin/config/services/mailchimp – откуда забрать ключик читайте на странице настроек. После этого у вас на странице вкладки Lists and Users должны появиться все списки, созданные в сервисе MailChimp (Currently Available MailChimp lists).

Списки MailChimp

На той же странице Lists and Users нажимаем «Add a list» для добавления локального экземпляра списка, который будет управлять тем, что размещен на сервисе MailСhimp. Теперь смотрим скриншоты, читаем комментарии и делаем по аналогии.

Первая группа настроек – это выбор имени и описания списка для административных страниц, связывание с удаленным списком MailСhimp и настройка Merge Fields. Модуль подтягивает настройки полей списка с сервиса MailСhimp и предоставляет возможность программного заполнения. Из нового в Merge Fields у меня только поле UID, через которое я передаю ID пользователя. Для чего оно мне пока не знаю, но уверен, что пригодится.

Настройки списка MailСhimp

Вторая группа – это настройка прав для ролей пользователя. Благодаря данным настройкам пользователи смогут подписываться на рассылку при регистрации, управлять подпиской на специальной вкладке своего аккаунта.

Настройки доступа пользователей

Третья группа – настройки для блока и формы подписки. В настройках отображения вы можете выбрать какие поля, кроме стандартного Email, предоставлять пользователю при оформлении подписки.

Настройки формы подписки

Все. После этих настроек на вашем сайте есть все необходимое для формирования базы подписчиков:

  • блок с формой подписки для анонимных пользователей;
  • возможность оформления подписки при регистрации пользователя;
  • возможность для каждого пользователя управлять своей подпиской в настройках аккаунта.

Темизация

После настройки модуля не забудьте подправить переводы, если ваш сайт на русском языке. Также можете немного пошаманить с формой подписки, регистрации, если владеете навыком темизации Drupal. Например, я хочу, чтобы у меня при регистрации у пользователя по умолчанию были активными чекбоксы на подписку:

  1. /**
  2.  * Implements hook_form_FORM_ID_alter().
  3.  */
  4. function MY_MODULE_form_user_register_form_alter(&$form, &$form_state, &$form_id) {
  5. if (isset($form['mailchimp_lists'])) {
  6. // Делаем fieldset сворачиваемым.
  7. $form['mailchimp_lists']['#collapsible'] = TRUE;
  8. // Добавляем к fieldset свой класс.
  9. $form['mailchimp_lists']['#attributes']['class'][] = 'mailchimp-lists-wrapper';
  10. foreach (element_children($form['mailchimp_lists']) as $key) {
  11. if (isset($form['mailchimp_lists'][$key]['subscribe'])) {
  12. // Делаем чекбоксы активными по умолчанию.
  13. $form['mailchimp_lists'][$key]['subscribe']['#default_value'] = TRUE;
  14. }
  15. }
  16. }
  17. }

Также мне не нравится, что блок с формой подписки занимает много места. Ведь можно скрыть его описание и метки для полей, как минимум. Так как список у меня имеет машинное имя 'subscribe_drupal', то альтерить форму будем через следующую функцию:

  1. /**
  2.  * Implements hook_form_FORM_ID_alter().
  3.  */
  4. function MY_MODULE_form_mailchimp_lists_user_subscribe_form_subscribe_drupal_alter(&$form, &$form_state, &$form_id) {
  5. $children = element_children($form['mailchimp_lists']);
  6. $key = array_shift($children);
  7.  
  8. if (isset($form['mailchimp_lists'][$key]['mergevars'])) {
  9. foreach ($form['mailchimp_lists'][$key]['mergevars'] as &$element) {
  10. // Скрываем метку поля.
  11. $element['#title_display'] = 'invisible';
  12. $required = !empty($element['#required']) ? ' *' : '';
  13. // Добавляем плейсхолдер.
  14. $element['#attributes']['placeholder'] = $element['#title'] . $required;
  15. }
  16. }
  17. }
Темизация MailChimp

Вот так-то, ребяты. Благодаря этому посту вы узнали, как собирать базу подписчиков для сервиса MailСhimp на Drupal сайте, а я в процессе написания настроил все это на своем блоге. Очень продуктивный пост!

Комментарии

Аватар пользователя Василий
Василий

Отличная статья!

Аватар пользователя jaan
jaan

Здравствуйте спасибо за полезную публикацию! помогите как можно вывести в блоке количество уже подписавшихся?

Аватар пользователя Сергей
Сергей

Добрый день! Спасибо за статью, а подскажите как сделать так, что если юзер подпишется и на друпал рассылку и на сео, что бы ему приходило одно письмо и с друпал новостями и с сео новостями!

Добавить комментарий

 888       8888888888   .d8888b.    .d8888b.  
888 888 d88P Y88b d88P Y88b
888 888 888 888 888
888 888 8888888 888d888b. 888
888 .88P 888 888P "Y88b 888 88888
888888K 888 888 888 888 888
888 "88b 888 Y88b d88P Y88b d88P
888 888 888 "Y8888P" "Y8888P88


Зарегистрируйтесь для добавления материалов без проверки.