yodaexolon Опубликовано 5 июня, 2014 Жалоба Поделиться Опубликовано 5 июня, 2014 Сайт-источник:http://belfast.by/blog/simpla-cms-mailing/ Представляю Вашему вниманию модульрассылки для Simpla CMS. Данный модуль не претендует на полноценнуюсистему отправки писем по неимоверному множеству адресатов, однакопредоставляет нужный функционал для создания рассылки новостей дляинтернет-магазина. Данный модуль разрабатывался с учётом особенностей SimplaCMS v2.1.5. Для корректной работы на иных версиях SimplaCMS следует модифицировать код!Для начала давайте откорректируем несколько файлов, для отображения нашего раздела «Рассылка» в панеле администрирования. Нам потребуются файлы settings.tpl, currency.tpl, deliveries.tpl, payment_method.tpl, payment_methods.tpl, расположенные в папке \simpla\design\html\. Для каждого из файлов, перед 6 (шестой) строкой, приблизительно, содержащей {/capture} вставляем новую строку <li><a href="index.php?module=MailingMethodsAdmin">Рассылка</a></li> Для хранения списка адресатов и их настроек (полную версию ожидайте позднее) нам потребуется отдельная таблица в базе данных. CREATE TABLE IF NOT EXISTS `s_mailing` ( `id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(255) NOT NULL, `types` text NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) ); Внесением новых записей в БД будет заниматься страница пользователя. Поправим немного \view\UserView.php.[1]Заменить: if(empty($this->user)) [1]На: if(empty($this->user) && !$this->request->post('mailing_email')) [2]Заменить: if($this->request->method('post') && $this->request->post('name')) [2]На: if(empty($this->user) && !$this->request->post('mailing_email')) { header('Location: '.$this->config->root_url.'/user/login'); exit(); } if($this->request->method('post') && $this->request->post('mailing_email')) { if(filter_var(trim($this->request->post('mailing_email')), FILTER_VALIDATE_EMAIL)) { $query = $this->db->placehold('select id from __mailing where email=?', $this->request->post('mailing_email')); $this->db->query($query); if($this->db->num_rows() < 1) { $query = $this->db->placehold('insert into __mailing(`email`)VALUES(?)', $this->request->post('mailing_email')); $this->db->query($query); } } else { $this->design->assign('error', 'email_syntax'); } } elseif($this->request->method('get') && $this->request->get('unsubscribe') && $this->request->get('mail')) { if(filter_var($this->request->get('mail'), FILTER_VALIDATE_EMAIL)){ $query = $this->db->placehold('select id from __mailing where email=?', $this->request->get('mail')); $this->db->query($query); if($this->db->num_rows() > 0){ $hash = md5($this->settings->license.$this->request->get('mail')); if($hash == $this->request->get('unsubscribe')){ $query = $this->db->placehold('delete from __mailing where email=?', $this->request->get('mail')); $this->db->query($query); }else{ $this->design->assign('error', '00001'); } }else{ $this->design->assign('error', '00001'); } }else{ $this->design->assign('error', 'email_syntax'); } } elseif($this->request->method('post') && $this->request->post('name')) [3]Заменить: $this->design->assign('meta_title', $this->user->name); [3]На: if(!$this->request->post('mailing_email')){$this->design->assign('meta_title', $this->user->name);}else{$this->design->assign('meta_title', 'Подписка на рассылку');} И собственно сам файл шаблона страницы пользователя \design\%mytempate%\html\user.tpl.Заменить: <h1>{$user->name|escape}</h1> На: {if $smarty.get.page && ($smarty.get.page == 'mailing' || $smarty.get.page == 'mailing_settings')}<h1>ПОДПИСКА</h1> {if $smarty.post.mailing_email && !$error} Вы успешно подписаны на рыссылку новостей. {/if} {if $smarty.get.unsubscribe && !$error}Вы успешно отписаны от рыссылки.{/if} {if $error}<div class="message_error">{if $error == 'email_syntax'}Некорректно введён email.{elseif $error == '00001'}Вы не подписаны на рассылку.{/if}</div>{/if} {else} <h1>{$user->name|escape}</h1> {/if} В завершение, нам понадобится создать два новых файла — шаблон и обработчик.Смотрите в прикрепленных файлах.\simpla\design\html\mailing_methods.tpl\simpla\MailingMethodsAdmin.php Код формы для добавления адресатов: <form action="/user/?page=mailing" method="post"> <p><input type="text" name="mailing_email" /></p><p><input class="submit_btn" type="submit" value="Подписаться" /></p> </form> simpla-cms-mailing.zip Цитата Ссылка на сообщение Поделиться на другие сайты
sergei5770 Опубликовано 5 июня, 2014 Жалоба Поделиться Опубликовано 5 июня, 2014 И по какому принципу работает эта штука? Цитата Ссылка на сообщение Поделиться на другие сайты
yodaexolon Опубликовано 5 июня, 2014 Автор Жалоба Поделиться Опубликовано 5 июня, 2014 И по какому принципу работает эта штука?Рассылка сообщений подписчикам Цитата Ссылка на сообщение Поделиться на другие сайты
infinity178 Опубликовано 6 июня, 2014 Жалоба Поделиться Опубликовано 6 июня, 2014 в данном модуле есть как минимум один минус - задержка в рассылке и не тянет большую нагрузку email Цитата Ссылка на сообщение Поделиться на другие сайты
walexnokia Опубликовано 6 июня, 2014 Жалоба Поделиться Опубликовано 6 июня, 2014 Фиговая рассылка надо дорабатывать изображение не присылаются на почтуТекст передаётся нормально Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 12 июля, 2014 Жалоба Поделиться Опубликовано 12 июля, 2014 Кому интересно есть такой вариант (отдельный движок):http://mail.aima.pp.ua/adminadminДелал на заказ. Рассылает любое количество писем при этом не забивая канал... Цитата Ссылка на сообщение Поделиться на другие сайты
mx009 Опубликовано 13 июля, 2014 Жалоба Поделиться Опубликовано 13 июля, 2014 НА 2.2.4 не работает Цитата Ссылка на сообщение Поделиться на другие сайты
cernos Опубликовано 19 сентября, 2014 Жалоба Поделиться Опубликовано 19 сентября, 2014 Кому интересно есть такой вариант (отдельный движок):http://mail.aima.pp.ua/adminadminДелал на заказ. Рассылает любое количество писем при этом не забивая канал...Откуда берутся мыльники?Как работает отправка по дате (времени) исполняющий файл в крон?Собственно цена разработки? Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 19 сентября, 2014 Жалоба Поделиться Опубликовано 19 сентября, 2014 http://simpla-tuning.com/products/rassylka-email-pokupatelyam Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 21 сентября, 2014 Жалоба Поделиться Опубликовано 21 сентября, 2014 Откуда берутся мыльники?Как работает отправка по дате (времени) исполняющий файл в крон?Собственно цена разработки?email берутся с текстовых файлов (Можно прикрутить к чему либо другому).Отправка идет по крону. Отправляет пачку определенного размера (с конфига берется) по вызову задания с крона. цена 40$ Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.