Как разработать модуль Друпал 7 для рассылки email, скачать готовый
Написать модуль для Друпал несложно. Для начала можно начать с решения простых задач, например, давайте разработаем простой модуль рассылки сообщений на email.
Называться наш модуль будет Delivery, вообще название можно взять любое, главное, чтобы не было конфликтов с существующими именами модулей. В папке необходимо создать файл delivery.info со следующим содержимым:
name = Delivery
description = Delivery
package = Delivery
core = 7.x
version = "7.x-1.00"
Здесь все интуитивно понятно, перечисляются название, описание, пакет, версия ядра и версия модуля. Далее создайте файл delivery.module, в нем можно писать нужный функционал. Например, минимальный код для рассылки может выглядеть так:
function delivery_menu() {
$items = array();
$items['admin/special/delivery'] = array(
'title' => t('Рассылка email'),
'page callback' => 'drupal_get_form',
'page arguments' => array('delivery_get_form'),
'access callback' => TRUE,
);
return $items;
}
function delivery_get_form() {
$form['from'] = array(
'#title' => t('Адрес отправителя'),
'#type' => 'textfield',
'#required' => TRUE,
);
$form['to'] = array(
'#title' => t('Адреса получателей'),
'#type' => 'file',
);
$form['subject'] = array(
'#title' => t('Тема сообщения'),
'#type' => 'textfield',
'#required' => TRUE,
);
$form['data'] = array(
'#title' => t('Текст письма'),
'#type' => 'text_format',
'#base_type' => 'textarea',
'#required' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Запустить рассылку'),
);
return $form;
}
function delivery_get_form_submit($form, &$form_state) {
$file = $form_state['values']['file'];
$emails = file($file->uri);
file_delete($file);
$subject = $form_state['values']['subject'];
$data = $form_state['values']['data']['value'];
$from = $form_state['values']['from'];
$subject = '=?utf-8?B?'.base64_encode($subject).'?=';
$header = 'From: '.$from."\r\n";
$header .= 'Reply-To: '.$from."\r\n";
$header .= 'MIME-Version: 1.0'."\r\n";
$header .= 'Content-type: text/html; charset=UTF-8'."\r\n";
$header .= 'Content-Transfer-Encoding: 8bit'."\r\n";
foreach ($emails as $email) {
mail($email, $subject, $data, $header);
}
drupal_set_message(t('Рассылка успешно выполнена'));
}
Всего лишь три функции, но они решают задачу полностью. Первая функция delivery_menu – это реализация хука hook_menu, в этом хуке можно легко перечислить нужные адреса, по которым будет доступен интерфейс для управления функционалом модуля. Мы указываем, что будет использоваться стандартный механизм Друпал форм и назначаем функцию delivery_get_form, которая будет отвечать за создание формы.
В функции delivery_get_form просто перечисляем нужные поля и их настройки, используется API Drupal Forms. Для формы рассылки в данном примере используется несколько полей:
- поле для указания адреса отправителя,
- поле для указания файла с email-адресами, каждый адрес в таком файле необходимо указывать с новой строки,
- поле для задания темы сообщения,
- поле для основного содержимого письма,
- кнопка отправки письма.
Наконец, функция delivery_get_form_submit, она срабатывает сама, когда будет отправлена форма, описанная в предыдущей функции, то есть после нажатия на кнопку отправить. Здесь происходит открытие файла с email-адресами и их считывание в массив, затем функция mail отправляет письма в цикле. Весь текст желательно оборачивать в функцию t, которая делает автоперевод в зависимости от языка сайта. Нужно сказать, что это минимальная реализация модуля, можно еще добавить функции для валидации и прочие улучшения.
Вот так, разработка модуля Друпал для рассылки на email заняла совсем мало времени. Теперь его можно скопировать в папку с модулями и включить на страницы настроек модулей. После этого, модуль будет доступен по тому пути, который указан в хуке меню.
Последние статьи
- 03.04.24ИТ / Уроки PHP Уроки простыми словами. Урок 3. Все операторы PHP с примерами, с выводом работы кода на экран.
- 02.04.24ИТ / Уроки PHP Уроки простыми словами. Урок 2. Типы данных в PHP с примерами.
- 02.04.24ИТ / Уроки PHP Уроки простыми словами. Урок 1. Коротко о языке веб-программирования PHP. Основы синтаксиса.
- 09.11.23ИТ / Базы данных Ошибки при переходе с MySQL 5.6 на 5.7 и как их исправить - импорт дампа БД завершился ошибкой или не работает INSERT. Отключение строгого режима STRICT_TRANS_TABLES или использование IGNORE
- 08.07.22ИТ / Разное Конвертация офисных файлов DOC, DOCX, DOCM, RTF в форматы DOCX, DOCM, DOC, RTF, PDF, HTML, XML, TXT без потерь и изменения разметки