Доработка расширения для рассылки Send Email JK
Сегодня поделюсь немного интересной информацией для владельцев сайтов собранных ан joomla. Рано и поздно возникает задача подписки и рассылки информации с сайта, это может быть разная постановка задачи например новогоднее поздравление или в моем неординарном случаи рассылка свежего номера газеты в формате pdf, который весить в среднем 20 мегабайт.
Рассылать как уже понятно будем через joomla и компонент от jkonstruktor.ru Send Email JK. Компонет Send Email JK написан для обеспечения массовой рассылки по базе пользователей подписанных на какую либо компанию. Можно создавать бесконечное множество компаний и большую базу лишьбы выдержал сервер такую рассылку. Радует что в компоненте заложена рандомность задержки отправки письма.
Начинаем мутить по моей задаче, как обычно сразу куча требований от админов которые потребовали не расылать письма более 20 мегабайт, настроить отдельный сервер на всякий случай, сформировать верный и красивый шаблон письма, залить базу из csv файла и много других ньансов.
И так перходим к внесению изменений в расширение Send Email JK, изменения у нас только под свои нужны и авторы думаю не будут против, назовем это новшества хаками.
С начало технично делам категорию рассылки, шаблон письма и заливаем базу или добавляем стандартно вручную- базу рассылки. Проверяем рассылку на первых трех подписчиках или создаем тетсовую отладочную категорию.
Вскрываем несколько файлов со следующими путями:
administrator/components/com_send_email/controller.php
/administrator/components/com_send_email/views/send_email/tmpl/default.php
Вверху файла default.php добавим следующие сроки кода:
<?php
defined('_JEXEC') or die('Restricted access');
echo'<fieldset>
<legend>Проверка номера газеты для рассылки</legend>';
$dataNomera = file($_SERVER['DOCUMENT_ROOT'] . "/каталог/nomer.txt");
$ar_dannie_nomera = explode(';', $dataNomera[0]);
$ar_data = explode('_', $ar_dannie_nomera[1]);
$dataNomera = $ar_data[2] . '.' . $ar_data[1] . '.' . $ar_data[0];
echo '<b> номер газеты: ' . $ar_dannie_nomera[0] . '<br>
дата публикации ' . $dataNomera . '</b>';
$file = $_SERVER['DOCUMENT_ROOT'] . "/каталог/nomer.pdf";
if (!file_exists($file)) {// проверяем существует ли файл
echo'<b style="color:red">Файл номера газеты отсутствует!</b>';
} else {
$filesize = filesize($file);
$filesize = ($filesize / 1024) / 1024;
$filesize = round($filesize, 1) . " MБ";
if ($filesize <= 20) {
echo'<br><b style="color:green">Вес файла ' . $filesize . ' - в норме!!!</b>';
} else {
echo'<br><b style="color:red">Вес файла ' . $filesize . ' - превышен !!!</b>';
}
}
echo'</fieldset>';
?>
В итоге визуально страница запуска рассылки изменится, приобретя верхний блок с информацией о состоянии файла.
Тем самым мы делаем считывание текстового фала с данными номера газеты и даты публикации которые предоставляются сервером, проверяем вес файла pdf. Теперь переходим в файл контроллера и до отправки $this->send_mime_mail письма добавляем следующие строки кода:
$title = trim($ar_messaga['title']);
$msg = $ar_messaga['message'];
$f_name = '';
//хак для рассылки свежего номера газеты
if ($id_cat == 4 || id_cat == 2) {
$f_name = $_SERVER['DOCUMENT_ROOT'] . "/images/nomer.pdf"; //погрузка свежего номера газеты
$dataNomera = file($_SERVER['DOCUMENT_ROOT'] . "/images/nomer.txt"); //получаю дату номера газеты из файла
$ar_dannie_nomera = explode(';', $dataNomera[0]);
$title = str_replace("{NOMER}", '№ ' . $ar_dannie_nomera[0], $title);
$msg = str_replace("{NOMER}",$ar_dannie_nomera[0], $msg);
$ar_data = explode('_', $ar_dannie_nomera[1]);
$dataNomera = $ar_data[2] . '.' . $ar_data[1] . '.' . $ar_data[0];
$msg = str_replace("{DATA}", $dataNomera, $msg);
}
Что мы тут делаем, перво наперво для нашей компании мы делаем хак отлавливая её по id, потом разбираем тестовый файл с номером и датой заменяем {замени меня} все что в фигурных скобках в нашем шаблоне на нужное. прикрепляем файл pdf и отправляем все на отправку, нечего сложного.
Так вот один из примеров доводки компонента Send Email JK под себя.
Доработка расширения для рассылки Send Email JK - Генератор расширений Joomla и многое другое на нашем сайте посвященном работе расширений, компонентов, модулей, плагинов для линейки Joomla. Отправляйте ссылку на страницу своим друзьям и в социальные сети воспользовавшись графическими иконками выше.