Онлайн-руководство разработчика 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
Модуль «Интернет-магазин» 12.8.1Настройка модуля 12.8.2Настройка интернет-магазина 12.8.3Валюты 12.8.4Цены для разных групп пользователей 12.8.5Минимальная цена 12.8.6Способы доставки 12.8.7Способы оплаты 12.8.8Настройка шаблонов писем 12.8.9Бланки 12.8.10Скидки 12.8.11Сиюминутные скидки 12.8.12Купоны 12.8.13Редактирование заказов 12.8.14Статистика 12.8.15Компоненты товаров 12.8.16Варианты товаров 12.8.17Коллекции объектов 12.8.18Фильтр товаров 12.8.19Списки товаров 12.8.20Корзина 12.8.21Заказ 12.8.22Выгрузка предложений в Яндекс.Маркет 12.8.23Заказ на Маркете 12.8.24Выгрузка предложений в Товары@Mail.Ru 12.8.25Выгрузка товаров в Google Merchant 12.8.26Обмен данными с 1С 12.8.27Обмен данными с 1С 8-ой версии 12.8.28Обмен данными с 1С 7-ой версии 12.8.29Обмен данными с сервисом МойСклад 12.8.30Виджеты интернет-магазина 12.8.31Классы расчёта доставки 12.8.32Интернет-магазин <5.3 12.8.33Переход с прежней версии модуля 12.8.34Справочник 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]
   
Описание проекта