Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

rss

Вы не зашли.

Объявление

#1 2013-06-09 19:17:10

infinity237
Модератор
Откуда: Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2674
Рейтинг :   175 
Профиль  Вебсайт

news_messaging :: Массовая рассылка новостей по email

Плагин news_messaging
==============================================
С помощью данного плагина Вы можете осуществлять массовую рассылку новстей всем зарегистрированным пользователям по email.

Установка:
1. Открыть файл /engine/skins/default/tpl/news/add.tpl и вставить в нужном месте переменную  {{ plugin.news_messaging }}
2. Включить и настроить плагин.
В поле "Тема рассылки" доступна переменная: {news_title} - заголовок новости.
В поле "Текст рассылки" доступны переменные: {news_title} - заголовок новости, {news_content} - содержимое новости, {link_to_news} - ссылка на новость.

[0.2][2013-07-20]
. Адаптировано под Next Generation CMS 0.9.4 RC

[0.1][2013-05-27]
. Выпуск версии

Отредактированно infinity237 (2013-07-20 23:19:24)


Прикрепленные файлы:
news_messaging.zip, Размер: 3,091 байт, Скачано: 411
news_messaging_0_2.zip, Размер: 3,560 байт, Скачано: 391

Неактивен

 

#2 2013-06-09 22:38:25

Knopik
Пользователь
Откуда: ufa
Зарегистрирован: 2009-10-14
Сообщений: 337
Рейтинг :   56 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

infinity237, прописал в add.tpl {{ news_messaging }} - пусто, {{ plugin.news_messaging }} - чекбокс появился

добавил новость - MySQL ERROR [select]: SELECT mail, newsletter FROM `ng_users` WHERE newsletter = 1

как я понял, рассылка тем, кто поставил галочку "подписка на новости"?
тогда где ставить галочку? smile

Отредактированно Knopik (2013-06-09 22:43:02)

Неактивен

 

#3 2013-06-10 09:20:21

infinity237
Модератор
Откуда: Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2674
Рейтинг :   175 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

1. Создать поле newsletter в таблице ng_users
2. В шаблоне /templates/default/registration.tpl добавить:

Код:

<div class="check_me">
<input type="checkbox" name="check_newsletter" id="check_me" value="1" checked>
<label for="check_me">Я согласен получать новости по электронной почте</label>
</div>

В шаблоне /templates/default/plugins/uprofile/profile.tpl добавить:

Код:

<div class="check_me">
<input type="checkbox" name="check_newsletter" id="check_me" value="1" {check_newsletter}>
<label for="check_me">Я согласен получать новости по электронной почте</label>
</div>

3. В /engine/plugins/auth_basic/auth_basic.php поправить в нужном способе регистрации запрос, например:

Код:

$mysql->query("INSERT INTO ".uprefix."_users (name, pass, mail, status, reg, last, newsletter) VALUES (".db_squote($values['email']).", ".db_squote(EncodePassword($values['password'])).", ".db_squote($values['email']).", ".$regstatus.", '".$add_time."', '".$add_time."', '".intval($_POST['check_newsletter'])."')");

4. В /engine/plugins/uprofile/uprofile.php где-нибудь в function uprofile_editForm() добавить:

Код:

    if($currentUser['newsletter'] == "1")
    {
        $tvars['vars']['check_newsletter'] = 'checked';
        
    } else {
        $tvars['vars']['check_newsletter'] = '';
    }

В function uprofile_editApply() добавить в $sqlFields = array () строчку:

Код:

'newsletter' => $_REQUEST['check_newsletter']

Неактивен

 

#4 2013-06-10 11:44:12

legenda
Пользователь
Откуда: ua
Зарегистрирован: 2009-12-22
Сообщений: 2151
Рейтинг :   39 
Профиль

Re: news_messaging :: Массовая рассылка новостей по email

infinity237, а всем старым пользователям которые уже зарегились будет отправлятся или нет?

Неактивен

 

#5 2013-06-10 13:14:12

Knopik
Пользователь
Откуда: ufa
Зарегистрирован: 2009-10-14
Сообщений: 337
Рейтинг :   56 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

infinity237, как вариант, можно создать xfield поле newsletter
http://ngcms.ru/forum/attachment.php?item=917&amp;download=1
а затем в плагине поправить запрос на 20й строке с

Код:

foreach ($mysql->select("SELECT mail, newsletter FROM `".uprefix."_users` WHERE newsletter = 1") as $row) {

на

Код:

foreach ($mysql->select("SELECT mail, xfields_newsletter FROM `".uprefix."_users` WHERE xfields_newsletter = 1") as $row) {

тогда не нужно будет править auth_basic и uprofile

Отредактированно Knopik (2013-06-10 13:14:46)


Прикрепленные файлы:
Безымянный.png, Размер: 32,808 байт, Скачано: 732

Неактивен

 

#6 2013-06-10 15:17:22

infinity237
Модератор
Откуда: Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2674
Рейтинг :   175 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

Это всё итак понятно, только:
1. Это не чекбокс. (2 клика вместо одного).
2. При регистрации xfields работать не будет.

Неактивен

 

#7 2013-06-10 15:20:02

infinity237
Модератор
Откуда: Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2674
Рейтинг :   175 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

legenda написал:

infinity237, а всем старым пользователям которые уже зарегились будет отправлятся или нет?

Нет, там должны быть "1" в поле newsletter. Можно, конечно им проставить автоматически или вообще убрать выборку по этому параметру, только не думаю, что все будут довольны получать сообщения с неизвестных источников, на которые они не подписывались.

Неактивен

 

#8 2014-01-19 13:23:32

vl
VIP любит этого пользователя.
Откуда: ua
Зарегистрирован: 2008-10-14
Сообщений: 662
Рейтинг :   14 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

infinity237 написал:

1. Создать поле newsletter в таблице ng_users
2. В шаблоне /templates/default/registration.tpl добавить:

Все это сделал, но письма почему-то не приходят. 
А что должно приходить - новые новости?

Неактивен

 

#9 2014-01-19 13:31:31

infinity237
Модератор
Откуда: Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2674
Рейтинг :   175 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

1. Сообщения будут приходить только тем пользователям, кто в профиле поставил галочку напротив опции - "Я согласен получать новости по электронной почте".
2. Если всё сделали по инструкции как написано здесь: http://ngcms.ru/forum/viewtopic.php?pid=35394#p35394, то при добавлении новости должен появится чекбокс "Сделать рассылку новости?" - если его отметить, то при добавлении новости - эта новость должна отправиться (в соответствии с шаблоном, который был оформлен в настройках плагина) всем у кого стоит в профиле галочка "Я согласен получать новости по электронной почте".
3. Следует учитывать версию CMS и плагина, т.к. zzMail работает по-разному.

Отредактированно infinity237 (2014-01-19 13:41:00)

Неактивен

 

#10 2014-01-19 20:25:00

vl
VIP любит этого пользователя.
Откуда: ua
Зарегистрирован: 2008-10-14
Сообщений: 662
Рейтинг :   14 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

Версия 0.9.3 + SVN [SVN1226+]  Работает в лучшем виде.  Не работало т.к. я пропустил пункт  " вставить в нужном месте переменную  {{ plugin.news_messaging }}"
Почему-то присылает сразу 2 идентичных письма. Это можно подправить?

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

Отредактированно vl (2014-01-19 20:32:19)

Неактивен

 

#11 2014-01-19 20:34:41

infinity237
Модератор
Откуда: Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2674
Рейтинг :   175 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

vl написал:

Версия 0.9.3 + SVN [SVN1226+]  Работает в лучшем виде.  Не работало т.к. я пропустил пункт  " вставить в нужном месте переменную  {{ plugin.news_messaging }}"
Почему-то присылает сразу 2 идентичных письма. Это можно подправить?

2 письма может прийти только если у 2 пользователей один и тотже email.

vl написал:

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

В профиле галочка должна работать, если всё делать по инструкции.

Неактивен

 

#12 2014-01-19 23:34:08

vl
VIP любит этого пользователя.
Откуда: ua
Зарегистрирован: 2008-10-14
Сообщений: 662
Рейтинг :   14 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

infinity237 написал:

2 письма может прийти только если у 2 пользователей один и тотже email.

Да, это точно.

В профиле галочка должна работать, если всё делать по инструкции.

Может зависит от правильности создания поля  newsletter в таблице ng_users?   Я в phpMyAdmin внизу структуры таблицы щелкнул "Добавить поле" и задал его тип INT

Неактивен

 

#13 2014-01-20 00:09:25

infinity237
Модератор
Откуда: Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2674
Рейтинг :   175 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

Для TWIG версии:

Код:

if($userROW['newsletter'] == "1")
    {
        $tVars['check_newsletter'] = 'checked';
        
    } else {
        $tVars['check_newsletter'] = '';
    }

И вывод через {{ check_newsletter }}

Неактивен

 

#14 2014-01-20 01:23:53

vl
VIP любит этого пользователя.
Откуда: ua
Зарегистрирован: 2008-10-14
Сообщений: 662
Рейтинг :   14 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

infinity237 написал:

Для TWIG версии:
И вывод через {{ check_newsletter }}

Я это сделал, но галочка "Я согласен получать рассылку" в профиле  так и остается непроставленной. При том, что рассылка приходит

Неактивен

 

#15 2014-01-20 01:37:30

infinity237
Модератор
Откуда: Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2674
Рейтинг :   175 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

Код:

if($userROW['newsletter'] == "1")
    {
        $tVars['check_newsletter'] = 'checked';
        
    } else {
        $tVars['check_newsletter'] = '';
    }

нужно после $tVars = array()

Неактивен

 

#16 2014-01-20 11:30:45

vl
VIP любит этого пользователя.
Откуда: ua
Зарегистрирован: 2008-10-14
Сообщений: 662
Рейтинг :   14 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

Постаил в uprofile.php после

Код:

    $tVars = array(
        'userRec'        => $urow,
        'user'            => array(
            'id'            =>    $urow['id'],
            'name'            =>    $urow['name'],
            'news'            =>    $urow['news'],
            'com'            =>    $urow['com'],
            'status'        =>    $status,
            'last'            =>    ($urow['last'] > 0) ? LangDate("l, j Q Y - H:i", $urow['last']) : $lang['no_last'],
            'reg'            =>    langdate("j Q Y", $urow['reg']),
            'email'            =>    secure_html($urow['mail']),
            'site'            =>    secure_html($urow['site']),
            'icq'            =>    secure_html($urow['icq']),
            'from'            =>    secure_html($urow['where_from']),
            'info'                    =>    secure_html($urow['info']),
            'photo_thumb'    =>    $userPhoto[1],
            'photo'            =>    $userPhoto[2],
            'avatar'        =>    $userAvatar[1],
            'php_self'        => $PHP_SELF,
            'flags'            => array(
                'hasPhoto'        => $config['use_photos'] && $userPhoto[0],
                'hasAvatar'        => $config['use_avatars'] && $userAvatar[0],
                'hasIcq'        => is_numeric($urow['icq'])?1:0,
            ),
        ),

        'flags'        => array(
            'photoAllowed'    => $config['use_photos']?1:0,
            'avatarAllowed'    => $config['use_avatars']?1:0,
        ),
        'form_action'        =>    generateLink('core', 'plugin', array('plugin' => 'uprofile', 'handler' => 'apply')),
        'token'                => genUToken('uprofile.update'),
        'info_sizelimit_text'    => str_replace('{limit}', intval($config['user_aboutsize']), $lang['uprofile']['about_sizelimit']),
        'info_sizelimit'        => intval($config['user_aboutsize']),
    );

Результат: галочка в профиле устанавливается и снимается исправно. Но письма на почту отправляются в любом случае

Неактивен

 

#17 2014-01-20 12:49:34

infinity237
Модератор
Откуда: Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2674
Рейтинг :   175 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

В запросе для TWIG версии нужно добавить WHERE newsletter = 1 в запрос.

Отредактированно infinity237 (2014-01-20 12:56:55)

Неактивен

 

#18 2014-01-20 13:34:18

vl
VIP любит этого пользователя.
Откуда: ua
Зарегистрирован: 2008-10-14
Сообщений: 662
Рейтинг :   14 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

Как правильно вставить   WHERE newsletter = 1 в

Код:

$mysql->query("INSERT INTO ".uprefix."_users (name, pass, mail, status, reg, last, newsletter) VALUES (".db_squote($values['email']).", ".db_squote(EncodePassword($values['password'])).", ".db_squote($values['email']).", ".$regstatus.", '".$add_time."', '".$add_time."', '".intval($_POST['check_newsletter'])."')");

?

у меня с нескольких попыток не получилось

Неактивен

 

#19 2014-01-20 13:39:18

infinity237
Модератор
Откуда: Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2674
Рейтинг :   175 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

Нет.
В news_messaging.php, найти:

Код:

foreach ($mysql->select("SELECT mail FROM `".uprefix."_users`") as $row) {

Заменить:

Код:

foreach ($mysql->select("SELECT mail FROM `".uprefix."_users` WHERE newsletter = 1") as $row) {

Неактивен

 

#20 2014-01-20 17:09:41

vl
VIP любит этого пользователя.
Откуда: ua
Зарегистрирован: 2008-10-14
Сообщений: 662
Рейтинг :   14 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

Теперь все работает правильно. Спасибо!

Пора переносить тему в "Страницы плагинов"

Отредактированно vl (2014-01-21 10:28:01)

Неактивен

 

#21 2015-06-06 19:54:38

irbees2008
Продвинутый чайник😁
Откуда: Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2523
Рейтинг :   107 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

Поставил, настроил,и по ходу рассылка пошла всем,

Домен ngcmshak.ru превысил максимум писем в час (50/50 (100%))

и походу все мой пользователи в течении нескольких часов получат всякую хрень yikes ,это совсем не то.Надо бы чтобы раз в неделю  и последние новости за неделю.

Неактивен

 

#22 2015-06-06 21:09:33

infinity237
Модератор
Откуда: Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2674
Рейтинг :   175 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

чё? там рассылка письма при добавлении, только при проставлении галочки. логика такая какая есть.

Неактивен

 

#23 2015-06-07 02:29:46

irbees2008
Продвинутый чайник😁
Откуда: Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2523
Рейтинг :   107 
Профиль  Вебсайт

Re: news_messaging :: Массовая рассылка новостей по email

Ну что было то и написал,может из за версии движка 0.9.3 + SVN [SVN1295+],но рассылка пошла всем и без галочки,ее я только у себя в профиле поставил

Неактивен

 

Board footer

Powered by FluxBB

[ Generated in 0.019 seconds, 35 queries executed ]