Takasu Опубликовано 5 июня, 2018 Жалоба Поделиться Опубликовано 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 и загнать письмо в шаблон, добавить там логотип или сверстать как-то красиво, но мне лень) Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 5 июня, 2018 Жалоба Поделиться Опубликовано 5 июня, 2018 По моему опыту, при большой базе данных пользователей, использование подобного функционала зачастую приводит к неприятным последствиям, вплоть до отключения сайта... Цитата Ссылка на сообщение Поделиться на другие сайты
Takasu Опубликовано 5 июня, 2018 Автор Жалоба Поделиться Опубликовано 5 июня, 2018 По моему опыту, при большой базе данных пользователей, использование подобного функционала зачастую приводит к неприятным последствиям, вплоть до отключения сайта... В теории возможно, на бесплатных хостингах и правда лучше не юзать. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 5 июня, 2018 Жалоба Поделиться Опубликовано 5 июня, 2018 В теории возможно, на бесплатных хостингах и правда лучше не юзать.Правильнее кроном Цитата Ссылка на сообщение Поделиться на другие сайты
Takasu Опубликовано 6 июня, 2018 Автор Жалоба Поделиться Опубликовано 6 июня, 2018 Правильнее кроном Да, можно и кроном, в данном случае это было не нужно, пользователей немного и значительного повышения не планируется Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 6 июня, 2018 Жалоба Поделиться Опубликовано 6 июня, 2018 В теории возможно, на бесплатных хостингах и правда лучше не юзать. На платных в большинстве случаев картина та же самая. Обычно хостеры не позволят гнать спам в неограниченном количестве даже на платных аккаунтах. Даже создаются специальные сервисы по рассылке - зачем это делать, если каждый сайтовладелец и сам может легко вставить простенький цикл для рассылки? Правильнее кроном Дело вовсе не в том, кроном или не кроном. Дело в самой механике рассылки. Надо рассылать небольшими порциями с растяжением во времени. А если пытаться отправлять сразу одним вызовом скрипта тысячи писем, хоть кроном, хоть не кроном, малоприятные сюрпризы обеспечены. А при малых объемах рассылки, конечно, это все пойдет нормально. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 6 июня, 2018 Жалоба Поделиться Опубликовано 6 июня, 2018 Корс я и без твоих поучений это давно знаю.Не ну задолбал уже!P.S. Подражатель Клиффорда Дево? Цитата Ссылка на сообщение Поделиться на другие сайты
Takasu Опубликовано 6 июня, 2018 Автор Жалоба Поделиться Опубликовано 6 июня, 2018 Дело вовсе не в том, кроном или не кроном. Дело в самой механике рассылки. Надо рассылать небольшими порциями с растяжением во времени. А если пытаться отправлять сразу одним вызовом скрипта тысячи писем, хоть кроном, хоть не кроном, малоприятные сюрпризы обеспечены. А при малых объемах рассылки, конечно, это все пойдет нормально. Для крона как раз и можно прописать скрипт который бы каждые n минут вытягивал n пользователей и отправлял им письма, только это еще гора кода сверху. Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 6 июня, 2018 Жалоба Поделиться Опубликовано 6 июня, 2018 Для крона как раз и можно прописать скрипт который бы каждые n минут вытягивал n пользователей и отправлял им письма, только это еще гора кода сверху. При правильном подходе кода будет практически столько же, как в Вашей разработке. А может, даже и меньше. А уж эффективность будет неизмеримо выше... Цитата Ссылка на сообщение Поделиться на другие сайты
Takasu Опубликовано 6 июня, 2018 Автор Жалоба Поделиться Опубликовано 6 июня, 2018 При правильном подходе кода будет практически столько же, как в Вашей разработке. А может, даже и меньше. А уж эффективность будет неизмеримо выше... Если это реально будет нужно, я сделаю. Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 22 февраля, 2019 Жалоба Поделиться Опубликовано 22 февраля, 2019 Последний кусок кода можно видоизменить по подобию функций email_order_user или email_order_admin и загнать письмо в шаблон, добавить там логотип или сверстать как-то красиво, но мне лень) подскажите пожалуйста, как сделать загнать в шаблон? Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 1 марта, 2021 Жалоба Поделиться Опубликовано 1 марта, 2021 Тоже интересует вопрос как сделать в шаблоне? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.