Русский English Deutsch Українська Қазақша

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

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

Вы не вошли.

#1 2013-06-09 18: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 22:19:24)

Вне форума

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

Knopik
Участник
Откуда: ufa
Здесь с 2009-10-14
Сообщений: 342
Рейтинг :   59 
Сайт

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

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

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

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

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

Вне форума

#3 2013-06-10 08: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 10:44:12

legenda
Участник
Откуда: ua
Здесь с 2009-12-22
Сообщений: 2,151
Рейтинг :   39 

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

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

Вне форума

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

Knopik
Участник
Откуда: ufa
Здесь с 2009-10-14
Сообщений: 342
Рейтинг :   59 
Сайт

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 12:14:46)

Вне форума

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

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

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

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

Вне форума

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

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

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

legenda пишет:

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

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

Вне форума

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

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

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

infinity237 пишет:

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

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

Вне форума

#9 2014-01-19 12: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 12:41:00)

Вне форума

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

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

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

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

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

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

Вне форума

#11 2014-01-19 19: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 22:34:08

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

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

infinity237 пишет:

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

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

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

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

Вне форума

#13 2014-01-19 23: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 00:23:53

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

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

infinity237 пишет:

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

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

Вне форума

#15 2014-01-20 00: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 10:30:45

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

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

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

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

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

Вне форума

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

vl
VIP любит этого пользователя.
Откуда: ua
Здесь с 2008-10-14
Сообщений: 664
Рейтинг :   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 12: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 16:09:41

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

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

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

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

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

Вне форума

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

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

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

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

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

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

Вне форума

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

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

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

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

Вне форума

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

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

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

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

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB 1.5.11
Модифицировал Visman

[ Сгенерировано за 0.021 сек, 7 запросов выполнено - Использовано памяти: 621.63 Кбайт (Пик: 674.63 Кбайт) ]