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

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

Вы не зашли.

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

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

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)

Не в сети

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

Knopik
Разработчик
Откуда ufa
Зарегистрирован: 2009-10-14
Сообщений: 353
Рейтинг :   62 
Сайт

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
Сообщений: 2,674
Рейтинг :   176 
Сайт

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
Сообщений: 2,160
Рейтинг :   39 

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

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

Не в сети

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

Knopik
Разработчик
Откуда ufa
Зарегистрирован: 2009-10-14
Сообщений: 353
Рейтинг :   62 
Сайт

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

infinity237, как вариант, можно создать xfield поле newsletter
attachment.php?item=917&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)

Не в сети

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

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

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

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

Не в сети

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

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

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

legenda пишет:

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

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

Не в сети

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

vl
VIP любит этого пользователя.
Откуда ua
Зарегистрирован: 2008-10-14
Сообщений: 672
Рейтинг :   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
Сообщений: 2,674
Рейтинг :   176 
Сайт

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
Сообщений: 672
Рейтинг :   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
Сообщений: 2,674
Рейтинг :   176 
Сайт

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
Сообщений: 672
Рейтинг :   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
Сообщений: 2,674
Рейтинг :   176 
Сайт

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
Сообщений: 672
Рейтинг :   14 
Сайт

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

infinity237 пишет:

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

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

Не в сети

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

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

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
Сообщений: 672
Рейтинг :   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
Сообщений: 2,674
Рейтинг :   176 
Сайт

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
Сообщений: 672
Рейтинг :   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
Сообщений: 2,674
Рейтинг :   176 
Сайт

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
Сообщений: 672
Рейтинг :   14 
Сайт

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

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

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

Изменено vl (2014-01-21 10:28:01)

Не в сети

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

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

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

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

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

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

Не в сети

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

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

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

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

Не в сети

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

irbees2008
Продвинутый чайник ;)
Откуда Шахтинск
Зарегистрирован: 2012-03-14
Сообщений: 2,873
Рейтинг :   121 
Сайт

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

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

Не в сети

Подвал раздела

Работает на FluxBB