Перейти к содержанию
Официальный форум поддержки Simpla

Уведомление клиентов (email) о записях в блоге


Рекомендуемые сообщения

post-22492-0-09250700-1528215127_thumb.png

 

Отправляется содержимое полного описания. Тема письма - название записи. Письма отправляются каждому пользователю отдельно. Или только администратору (Обратный адрес оповещений).
Совместимость - simpla 2.3.x, возможно подойдет на младшие версии.

Открываем файл - www\simpla\design\html\post.tpl
И после:

<!-- Параметры страницы (The End)-->

в моем случае строка 185, вставляем:

<!-- Параметры рассылки -->
<div class="block layer">
    <h2>Параметры рассылки</h2>
    <ul>
        <li><label class="property">Уведомить ?</label> <input name="mail_val" value="on" type="radio"></li>
        <li><label class="property">Тест (письмо админу)</label> <input name="mail_val" value="test" type="radio"></li>
    </ul>
</div>
<!-- Параметры рассылки (The End)-->

 

Дальше открываем - www\simpla\PostAdmin.php
И после:

$post->text = $this->request->post('body');

Вставляем:

$mail_val = $this->request->post('mail_val');

В этом-же файле немного дальше, после:

// Не допустить одинаковые URL разделов
if(($a = $this->blog->get_post($post->url)) && $a->id!=$post->id)
{
	$this->design->assign('message_error', 'url_exists');
}
else
{

Вставляем:

if ($mail_val=="on") {
    // Выбираем пользователей
    $data = $this->users->get_users();

    // И перебираем их в цикле
    foreach($data as $val) {
	// Готовим данные
	$info["subject"]    = $post->name;
	$info["email"]	    = $val->email;
	$info["text"]	    = $post->text;

	// Отправляем письмо
	$this->notify->report_mail($info);
    }
} elseif ($mail_val=="test") {
    // Отправляем тестовое письмо админу
    $info["subject"]	= $post->name;
    $info["email"]	= $this->settings->notify_from_email;
    $info["text"]	= $post->text;

    // Отправляем письмо
    $this->notify->report_mail($info);
}

Ну и напоследок открываем - www\api\Notify.php
Находим в самом верху:

function email($to, $subject, $message, $from = '', $reply_to = '')
{
    $headers = "MIME-Version: 1.0\n" ;
    $headers .= "Content-type: text/html; charset=utf-8; \r\n"; 
    $headers .= "From: $from\r\n";
    if(!empty($reply_to))
        $headers .= "reply-to: $reply_to\r\n";
    $subject = "=?utf-8?B?".base64_encode($subject)."?=";
    @mail($to, $subject, $message, $headers);
}

И после вставляем:

// Уведомление о новых записях в блоге
public function report_mail($info) {
    $this->email($info["email"], $info["subject"], $info["text"], $this->settings->notify_from_email, $this->settings->notify_from_email);
}

Последний кусок кода можно видоизменить по подобию функций email_order_user или email_order_admin и загнать письмо в шаблон, добавить там логотип или сверстать как-то красиво, но мне лень)

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

В теории возможно, на бесплатных хостингах и правда лучше не юзать.

Ссылка на сообщение
Поделиться на другие сайты

Правильнее кроном

 

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

Ссылка на сообщение
Поделиться на другие сайты

 

В теории возможно, на бесплатных хостингах и правда лучше не юзать.

 

На платных в большинстве случаев картина та же самая. Обычно хостеры не позволят гнать спам в неограниченном количестве даже на платных аккаунтах. Даже создаются специальные сервисы по рассылке - зачем это делать, если каждый сайтовладелец и сам  может легко вставить простенький цикл для рассылки?

 

 

Правильнее кроном

 

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

 

А при малых объемах рассылки, конечно, это все пойдет нормально.

Ссылка на сообщение
Поделиться на другие сайты

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

 

А при малых объемах рассылки, конечно, это все пойдет нормально.

 

Для крона как раз и можно прописать скрипт который бы каждые n минут вытягивал n пользователей и отправлял им письма, только это еще гора кода сверху.

Ссылка на сообщение
Поделиться на другие сайты

Для крона как раз и можно прописать скрипт который бы каждые n минут вытягивал n пользователей и отправлял им письма, только это еще гора кода сверху.

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

Если это реально будет нужно, я сделаю.

Ссылка на сообщение
Поделиться на другие сайты
  • 8 месяцев спустя...

 

Последний кусок кода можно видоизменить по подобию функций email_order_user или email_order_admin и загнать письмо в шаблон, добавить там логотип или сверстать как-то красиво, но мне лень)

 

 
подскажите пожалуйста, как сделать загнать в шаблон?
Ссылка на сообщение
Поделиться на другие сайты
  • 2 года спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...