+7 495 008 8452
  • Загрузка
Выберите ваш цвет

Как распознать зарегистрированного пользователя на сайте средствами «Битрикс»?

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.

Говорят, что правило Парето работает и в сфере продаж. Говорят, что 20% постоянных покупателей делают 80% выручки. Хотя это соотношение и не выполняется буквально, но тенденция именно такова: постоянные покупатели совершают больше половины всех покупок. Впрочем, доход любого сайта обеспечивает именно постоянная аудитория, а в особенности зарегистрированные пользователи.

Естественно, и отношение к ним должно быть особое. Сценарии поведения зарегистрированных пользователей надо фиксировать отдельным отчетом в статистике и прилежно изучать. Постоянных пользователей можно приветствовать при визите на сайт, показывать персонализированные новинки и предзаказы, даже менять структуру и дизайн по личным предпочтениям. Но для всего этого надо сначала определить, что зарегистрированный пользователь появился на сайте. Даже если он не авторизовался. Как это сделать?

1. Серверная сторона отслеживания

Используем Ajax. В корневом каталоге сайта создадим файл ajax_user_activity_update.php с кодом

<?
define('STOP_STATISTICS', true);
define('NOT_CHECK_PERMISSIONS', true);
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');


2. Клиентская сторона отслеживания

В файле footer.php, сразу под закрывающим тегом разместим код отслеживания:

<?
// подключать скрипт будем только залогиненным пользователям
if($GLOBALS['USER']->isAuthorized()) {
   ?><script type="text/javascript"><!--
      // <этот кусок можно вынести в отдельный файл>
      var CActivityUpdate = function(sActivityUrl, iActivityTime) {
         var _this = this;
         this.sActivityUrl = sActivityUrl;
         this.iActivityTime = iActivityTime;

         // определение ajax-функции
         if(typeof(window['jQuery']['get']) == 'function') {
            // jQuery
            this.funcAjax = jQuery.get;
         } else if(typeof(window['BX']['ajax']['get']) == 'function') {
            // Bitrix
            this.funcAjax = BX.ajax.get;
         }

         // получение значения cookie
         this.getCookie = function(name) {
            var cookie = " " + document.cookie;
            var search = " " + name + "=";
            var setStr = null;
            var offset = 0;
            var end = 0;
            if(cookie.length > 0) {
               offset = cookie.indexOf(search);
               if(offset != -1) {
                  offset += search.length;
                  end = cookie.indexOf(";", offset)
                  if(end == -1) {
                     end = cookie.length;
                  }
                  setStr = unescape(cookie.substring(offset, end));
               }
            }
            return(setStr);
         };

         // установка значения cookie
         this.setCookie = function(sName, sValue, sExpires, sPath, sDomain, bSecure) {
            var sCookie = '';
            sCookie += sName + '=' + escape(sValue);
            sCookie += sExpires ? '; expires=' + sExpires : '';
            sCookie += sPath ? '; path=' + sPath : '';
            sCookie += sDomain ? '; domain=' + sDomain : '';
            sCookie += bSecure ? '; secure' : '';
            document.cookie = sCookie;
         };
         
         // выполнение "холостого" хита для обновления даты активности пользователя
         this.updateActivity = function() {
            var funcAjax = _this.funcAjax;
            if(funcAjax && typeof(funcAjax) == 'function') {
               var iLastActivity = _this.getCookie('BX_activity');
               iLastActivity = iLastActivity ? parseInt(iLastActivity) : 0;
               var oDate = new Date();
               var iCurTime = oDate.getTime();
               var bNeedUpdate = iCurTime >= (iLastActivity + _this.iActivityTime) || iCurTime < (iLastActivity - _this.iActivityTime);
               if(bNeedUpdate) {
                  var sExpires = false; //'Mon, 01-Jan-2018 00:00:00 GMT'
                  _this.setCookie('BX_activity', iCurTime, sExpires, '/');
                  funcAjax(_this.sActivityUrl);
               }
            }
         };

         // запуск обновления даты активности пользователя с заданным интервалом
         this.startUpdating = function() {
            if(_this.funcAjax && typeof(_this.funcAjax) == 'function') {
               setInterval(_this.updateActivity, _this.iActivityTime);
            }
         };
      };
      // </этот кусок можно вынести в отдельный файл>

      // запрашиваемая страница - /ajax_user_activity_update.php
      // интервал обновления - две минуты (в миллисекундах)
      var appActivityUpdate = new CActivityUpdate('/ajax_user_activity_update.php', (1000*60*2));
      appActivityUpdate.startUpdating();
   //--></script><?
}
?>



Готово!

Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...