Онлайн-руководство разработчика NetCat
Модуль «Поиск по сайту» 12.2.1Начало работы с модулем 12.2.2Язык запросов 12.2.3Способы хранения индекса 12.2.4Интерфейс модуля в панели управления сайтом 12.2.5Области индексирования 12.2.6Области HTML-страниц 12.2.7Области поиска на сайте 12.2.8Индексирование по расписанию, запуск индексирования в фоновом режиме 12.2.9Правила индексирования 12.2.10Постановка задачи переиндексирования в очередь 12.2.11Интеграция модуля в макеты дизайна сайта 12.2.12Простая форма поиска 12.2.13Расширенная форма поиска 12.2.14Вывод результатов поиска 12.2.15Стилизация списка подсказок 12.2.16Расширенные настройки 12.2.17Разработка расширений модуля 12.2.18Обзор архитектуры модуля 12.2.19Обработчики документов различных типов 12.2.20Текстовые фильтры 12.2.21Анализаторы текста 12.2.22Корректировщики запросов 12.2.23Подключение других поисковых систем 12.2.24Решение проблем с поиском 12.2.25Решение проблем с индексированием 12.2.26Справочник API

Подписка пользователя

Существуют два способа подписки на рассылку:

  • Через ссылку вида example.com/news/subscribe_news.html
  • Передав необходимые данные на скрипт /netcat/modules/subscriber/index.php (используя форму)

В первом случае подписаться можно только на одну рассылку, принадлежащую компоненту в разделе, в указанном примере — это компонент в разделе news из раздела news. Ссылка доступна в компоненте (в префиксе, в объекте списка, в суффиксе, в полном отображении объекта) через переменную $subscribeLink, то есть, например, в префиксе компонента можно написать:

<a href="<?= $subscribeLink;?>">подписаться</a>

Это код выведет ссылку для подписки на текущий компонент в разделе.

Формат ссылки в общем виде:

http://название_сайта/раздел1/.../разделN/subscribe_КлючевоеСловоКомпонентаВРазделе.html

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

Ссылку вида example.com/news/subscribe_news.html можно использовать и для отписки пользователя от рассылки. Для этого в условие подписки нужно проверять, подписан ли пользователь на рассылку, и, если подписан, то отписать его. Пример такой реализации:

// получаем объект для работы с рассылками
$nc_subscriber = nc_subscriber::get_object();

// проверяем, подписан ли пользователь на компонент в разделе
if ( $nc_subscriber->is_subscribe_to_cc($cc) ) {
	// получаем номер рассылки по данному компоненту в разделе
	$mailer_id = $nc_subscriber->get_mailer_by_cc($cc, 'Mailer_ID');

	// отписываем пользователя
	$nc_subscriber->subscription_delete_by_mailer($mailer_id);
	
    // подписка производиться не будет
	$posting = 0;
	
	// текст, выдаваемый пользователю
	$warnText = "Вы успешно отписались";
}

Подробнее о функция модуля будет рассказано в специальном разделе.

Во втором случае формат данных, пришедших через GET или POST, должен быть таким:

subscribe_НомерРассылки=1 — для подписки на рассылку;
subscribe_НомерРассылки=-1 — для отписки от рассылки.

Пример использования:

Ссылка для подписки на рассылки с номерами 2 и 5, а также для отписки от рассылки с номером 3:

http://example.com/netcat/modules/subscriber/index.php?subscribe_2=1&subscribe_5=1&subscribe_3=-1

В форме этот параметр можно указать так:

<input type="hidden" name="subscribe_2" value="1>

Подписка для незарегистрированных пользователей

При наличии модуля «Личный кабинет» можно разрешить незарегистрированному пользователю подписываться на рассылки. Хоть пользователь и не регистрируется на сайте, он все равно создаётся (добавляется запись в таблице User). Назовем таких пользователей псевдопользователи.

Для начала необходимо настроить модуль «Личный кабинет», настроив параметры для псевдопользователя:

Псевдопользователь сможет авторизоваться только в одном разделе (разделе с управлениями подписками), на других разделах он будет как неавторизированный, причем для авторизации он должен пройти по ссылке, содержащую специальный код в параметре auth_hash. Такая ссылка генерируется автоматически и доступна через макропеременную

%SUB_LINK%

Допустим, мы хотим разрешить всем пользователям подписываться на новости компании. Для этого создаем рассылку «Новости» с типом доступа «всем».

В настройках модуля необходимо задать форму подписки для неавторизированных пользователей. Она может выглядеть так:

Подписка на новости <br/>
<form method='post' action='/netcat/subscribe.php'>
<input type='hidden' name='catalogue' value='".$catalogue."' />
<input type='hidden' name='sub' value='".$sub."' />
<input type='hidden' name='cc' value='".$cc."' />
<input type='hidden' name='posting' value='1' />
Ваш email:
<input type='text' name='fields[Email]' value='".$fields[Email]."' />
<input type='submit' value='Ok' />
</form>

Основные моменты:

  • Данные передаются на скрипт /netcat/subscribe.php
  • Необходимо передать номер сайта, раздела и компонента в разделе.
  • Необходимо передать параметр posting, равный 1.
  • Необходимо передать параметр fields[ИмяПоля]. Значение данного параметра запишется в таблицу User, в поле ИмяПоля. Рекомендуется использовать Email, иначе пользователь не сможет получать письма. Помимо эл. почты также можно передать и другие параметры, например имя fields[ForumName]

Если пользователь не ошибся при вводе адреса, то далее сработает «Действие после подписки», которое может содержать текст об успешной подписке. Пример заполнения действия после подписки:

<?=( $nc_status == 'on' ? "Вы успешно подписались." : "На ваш e-mail отправлено письмо с ссылкой для подтверждения подписки");?>
<br/><br/>
<a href='<?= $current_sub['Hidden_URL']; ?>'>Вернуться к новостям</a>

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

Уважаемый ...!
Чтобы подтвердить подписку, перейдите по <a href='%LINK%'>ссылке.</a>
<a href='%SUB_LINK%'>Страница управления подписками</a>

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

При переходе по ссылке для подтверждения пользователь увидит текст, заданный в настройках модуля («Текст, выводимый при подтверждении подписки»).

После этого незарегистрированный пользователь сможет получать обновления о сайте и управлять своими подписками в специальном разделе.

Как было сказано выше, псевдопользователь авторизуется по хэшу в разделе управления собственными подписками, то есть пемеременные $AUTH_USER_ID и $current_user доступны.

Элемент массива $current_user['UserType'] для псевдопользоватлей равен 'pseudo', для обычных зарегистрированных пользоватлей — 'normal'.

Комментарии 1

Закрывающаяся кавычка пропала:
[CODE]<input type="hidden" name="subscribe_2" value="1>
[/CODE]
   
Описание проекта