Веб-разработка, логотип Websash

Как разработать модуль Друпал 7 для рассылки email, скачать готовый

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

drupal-module-delivery

Называться наш модуль будет 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. Для формы рассылки в данном примере используется несколько полей:

Наконец, функция delivery_get_form_submit, она срабатывает сама, когда будет отправлена форма, описанная в предыдущей функции, то есть после нажатия на кнопку отправить. Здесь происходит открытие файла с email-адресами и их считывание в массив, затем функция mail отправляет письма в цикле. Весь текст желательно оборачивать в функцию t, которая делает автоперевод в зависимости от языка сайта. Нужно сказать, что это минимальная реализация модуля, можно еще добавить функции для валидации и прочие улучшения.

Вот так, разработка модуля Друпал для рассылки на email заняла совсем мало времени. Теперь его можно скопировать в папку с модулями и включить на страницы настроек модулей. После этого, модуль будет доступен по тому пути, который указан в хуке меню.

Скачать модуль Delivery для Drupal 7

Оставить заявку

Последние статьи

Популярные разделы