Под рассылкой новостей здесь понимается рассылка новых записей любого блока. Как правило, рассылка делается для новостных блоков, или блогов со статьями. При этом шаблон блока, естественно, должен быть многозаписным.
Прежде всего проверьте, разрешена ли самостоятельная внешняя регистрация пользователей на сайте. См. главную панель управления: Сайт > Пользователи сайта. Далее см. Настройки.
В дескрипторе (.tdd) поместите параметр $params['subsription'] = true;
, который разрешает зарегистрированным пользователям подписываться на рассылку новостей.
Подписка делается прямо на страничке с рассылаемым блоком. В коде шаблона нужно поместить ссылку (кнопку) для подписки или отписки:
.tplecho' <a href="?subscribe&block='.$block.'&action=1">Подписаться</a> <a href="?subscribe&block='.$block.'&action=0">Отписаться</a> ';
Если пользователь не авторизован, то после щелчка по ссылке, ему будет предложено авторизоваться (или зарегистрироваться).
Информацию о том, подписан текущий пользователь на блок или нет, можно узнать по переменной шаблона $subscription['user-is-subscribed']:
.tplif ($subscription['user-is-subscribed'])
Пользователь подписан
При каждом акте подписки или отписки, на шаблон дополнительно поступает переменная $subscription['error']:
.tplif ($subscription['error'] == 0)
Подписка/отписка была произведена успешно
else
Ошибка. Команда подписки/отписки не была выполнена
Пользователь может посмотреть список всех блоков, на которые он подписан, через главное меню управления: Сайт > Я – подписчик новостей c блоков....
<?php if ($subscription['user-is-subscribed']) { $whatToDo = 'Отписаться от новостей'; $alert = 'Вы подписаны на рассылку новостей с этого блока'; $action = 0; }else{ $whatToDo = 'Подписаться на новости'; $alert = 'Вы отписаны от новостей с этого блока'; $action = 1; } # Кнопка echo' <a href="?subscribe&block='.$block.'&action='.$action.'&pagehref='.Blox::getPageHref(true).'"> '.$whatToDo.' </a>'; # Оповещение if (isset($subscription['error'])) echo'<div>'.$alert.'</div>'; foreach ($tab as $dat) { . . . } ?>