Подписка на рассылку новостей

Под рассылкой новостей здесь понимается рассылка новых записей любого блока. Как правило, рассылка делается для новостных блоков, или блогов со статьями. При этом шаблон блока, естественно, должен быть многозаписным.

Чтобы создать подписку на рассылку новостей блока:

  1. Прежде всего проверьте, разрешена ли самостоятельная внешняя регистрация пользователей на сайте. См. главное меню: Сайт > Пользователи сайта. Далее см. меню Настройки.

  2. В дескрипторе (.tdd) поместите параметр $params['subsription'] = true;, который разрешает зарегистрированным пользователям подписываться на рассылку новостей.

  3. Подписка делается прямо на страничке с рассылаемым блоком. В коде шаблона нужно поместить ссылку (кнопку) для подписки или отписки:

    .tpl
    echo'
    <a href="?subscribe&block='.$block.'&action=1">Подписаться</a>
    <a href="?subscribe&block='.$block.'&action=0">Отписаться</a>
    ';

    Если пользователь не авторизован, то после щелчка по ссылке, ему будет предложено авторизоваться (или зарегистрироваться).

 

Информацию о том, подписан текущий пользователь на блок или нет, можно узнать по переменной шаблона $subscription['userIsSubscribed']:

.tpl
if ($subscription['userIsSubscribed'])
    Пользователь подписан

При каждом акте подписки или отписки, на шаблон дополнительно поступает переменная $subscription['error']:

.tpl
if ($subscription['error'] == 0)
    Подписка/отписка была произведена успешно
else
    Ошибка. Команда подписки/отписки не была выполнена

Пользователь может посмотреть список всех блоков, на которые он подписан, через главное меню управления: Сайт > Я – подписчик новостей c блоков....

 

Пример кнопки подписки/отписки и текста оповещения

news.tpl
<?php
    if ($subscription['userIsSubscribed']) {
        $whatToDo = 'Отписаться от новостей';
        $alert = 'Вы подписаны на рассылку новостей с этого блока';
        $action = 0;
    }else{
        $whatToDo = 'Подписаться на новости';
        $alert = 'Вы отписаны от новостей с этого блока';
        $action = 1;
    }
    # Кнопка
    echo'
    <a href="?subscribe&block='.$block.'&action='.$action.'&pageUrl='.Blox::getPageUrl(true).'"> 
        '.$whatToDo.'
    </a>';
    # Оповещение
    if (isset($subscription['error']))
        echo'<div>'.$alert.'</div>';        
    
    foreach ($tab as $dat) {
        . . . 
    }
    
?>