Takasu Posted June 5, 2018 Report Share Posted June 5, 2018 Отправляется содержимое полного описания. Тема письма - название записи. Письма отправляются каждому пользователю отдельно. Или только администратору (Обратный адрес оповещений).Совместимость - 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 и загнать письмо в шаблон, добавить там логотип или сверстать как-то красиво, но мне лень) Quote Link to post Share on other sites
phukortsin Posted June 5, 2018 Report Share Posted June 5, 2018 По моему опыту, при большой базе данных пользователей, использование подобного функционала зачастую приводит к неприятным последствиям, вплоть до отключения сайта... Quote Link to post Share on other sites
Takasu Posted June 5, 2018 Author Report Share Posted June 5, 2018 По моему опыту, при большой базе данных пользователей, использование подобного функционала зачастую приводит к неприятным последствиям, вплоть до отключения сайта... В теории возможно, на бесплатных хостингах и правда лучше не юзать. Quote Link to post Share on other sites
Noxter Posted June 5, 2018 Report Share Posted June 5, 2018 В теории возможно, на бесплатных хостингах и правда лучше не юзать.Правильнее кроном Quote Link to post Share on other sites
Takasu Posted June 6, 2018 Author Report Share Posted June 6, 2018 Правильнее кроном Да, можно и кроном, в данном случае это было не нужно, пользователей немного и значительного повышения не планируется Quote Link to post Share on other sites
phukortsin Posted June 6, 2018 Report Share Posted June 6, 2018 В теории возможно, на бесплатных хостингах и правда лучше не юзать. На платных в большинстве случаев картина та же самая. Обычно хостеры не позволят гнать спам в неограниченном количестве даже на платных аккаунтах. Даже создаются специальные сервисы по рассылке - зачем это делать, если каждый сайтовладелец и сам может легко вставить простенький цикл для рассылки? Правильнее кроном Дело вовсе не в том, кроном или не кроном. Дело в самой механике рассылки. Надо рассылать небольшими порциями с растяжением во времени. А если пытаться отправлять сразу одним вызовом скрипта тысячи писем, хоть кроном, хоть не кроном, малоприятные сюрпризы обеспечены. А при малых объемах рассылки, конечно, это все пойдет нормально. Quote Link to post Share on other sites
Noxter Posted June 6, 2018 Report Share Posted June 6, 2018 Корс я и без твоих поучений это давно знаю.Не ну задолбал уже!P.S. Подражатель Клиффорда Дево? Quote Link to post Share on other sites
Takasu Posted June 6, 2018 Author Report Share Posted June 6, 2018 Дело вовсе не в том, кроном или не кроном. Дело в самой механике рассылки. Надо рассылать небольшими порциями с растяжением во времени. А если пытаться отправлять сразу одним вызовом скрипта тысячи писем, хоть кроном, хоть не кроном, малоприятные сюрпризы обеспечены. А при малых объемах рассылки, конечно, это все пойдет нормально. Для крона как раз и можно прописать скрипт который бы каждые n минут вытягивал n пользователей и отправлял им письма, только это еще гора кода сверху. Quote Link to post Share on other sites
phukortsin Posted June 6, 2018 Report Share Posted June 6, 2018 Для крона как раз и можно прописать скрипт который бы каждые n минут вытягивал n пользователей и отправлял им письма, только это еще гора кода сверху. При правильном подходе кода будет практически столько же, как в Вашей разработке. А может, даже и меньше. А уж эффективность будет неизмеримо выше... Quote Link to post Share on other sites
Takasu Posted June 6, 2018 Author Report Share Posted June 6, 2018 При правильном подходе кода будет практически столько же, как в Вашей разработке. А может, даже и меньше. А уж эффективность будет неизмеримо выше... Если это реально будет нужно, я сделаю. Quote Link to post Share on other sites
n1c Posted February 22, 2019 Report Share Posted February 22, 2019 Последний кусок кода можно видоизменить по подобию функций email_order_user или email_order_admin и загнать письмо в шаблон, добавить там логотип или сверстать как-то красиво, но мне лень) подскажите пожалуйста, как сделать загнать в шаблон? Quote Link to post Share on other sites
get31 Posted March 1, 2021 Report Share Posted March 1, 2021 Тоже интересует вопрос как сделать в шаблоне? Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.