Короткие ссылки и UTM метки

Классы

В моделе имеется всего несколько основных классов с которыми ведется основная работа. Перед использованием классов модуля, нужно подключить модуль.

\Bitrix\Main\Loader::includeModule('bxmaker.shortlink');

ManagerTable

Работает с короткими ссылками хранящимися в базе данных.

$oManagerTable = new \Bxmaker\ShortLink\ManagerTable(); 
//или
\Bxmaker\ShortLink\Manager::getInstance()->getTable();

Поля для выборки и фильтрации:

  • ID - автоинкримент, идентификатор ссылки
  • SITE_ID - идентификатор сайта например s1
  • FROM - код короткой ссылки, напр DfjOl
  • TO - конечная ссылка, подготовленая методом prepareLink()
  • HASH - md5 сумма от подготовленой ссылки методом prepareLink()
  • TAG - тег для объединения ссылок в группы и удобства фильтрации

Дополнительные поля для выборки:

  • CNT - для подсчета количества записей
  • STAT - ReferenceField на \Bxmaker\ShortLink\StatTable

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

$dbrLink = $oManager->getTable()->getList(array(
    'select' => array('*', 'AMOUNT' => 'STAT.AMOUNT', 'AMOUNT_UNIQ' => 'STAT.AMOUNT_UNIQ'),
    'filter' => array('FROM' => 'DfjOl') 
)); 

Manager

Используется для работы с короткими ссылками - подготовка короткой ссылки, подготовка ссылки для добавления в базу, доступ к таблице с с данными о коротких ссылках и прочее.

$oManager = \Bxmaker\ShortLink\Manager::getInstance();

getTable()

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

Если есть необходимость записи напрямую в базу или запроса данных по коротким ссылкам, можно исопльзвоать метод getTable(), который возвращает экземпляр класса \Bxmaker\ShortLink\ManagerTable

$oManagerTable = $oManager->getTable();

/* далее можно использовать методы соответствующего класса */
$dbr = $oManagertable->getList(array(
   'filter' => array(
       'ID' => 1 // ID  короткой ссылки
   )
));
if($ar = $dbr->fetch())
{
   echo '<pre>';
   print_r($ar);
   echo '</pre>';
}

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

/* ссылка на которую должна вести короткая ссылка */
$url = 'https://bxmaker.ru/promo_stranica/?utm-source=bxmaker.ru&utm-compaign=promo';

/* получение кода короткой ссылки */
$code = $oManager->addLink($url); 
// или для конкретного сайта, не для текущего
$code = $oManager->addLink($url, 's1'); 

Метод формирует из кода короткой ссылки полный url адрес короткой ссылки, включая схему подклчюения и домен.

$code = 'DfjOl'; 
$shortLink = $oManager->prepareShortLink($code); //  https://bxmaker.ru/DfjOl

Получение информации по короткой ссылке

Для получения информации по ссылкам используется метод getList класса \Bxmaker\ShortLink\ManagerTable. Также можно в одном запросе получить
суммарную статистику по переходам, запросив поле STAT.AMOUNT и STAT.AMOUNT_UNIQ.

/* инициализация объекта класса для работы со статистикой в базе данных */
$oStatTable = new \Bxmaker\ShortLink\StatTable();
$oManager = \Bxmaker\ShortLink\Manager::getInstance();

/* используйте $oStatTable->getList() или $oManager->getTable()->getList() */
$dbrLink = $oManager->getTable()->getList(array(
    'select' => array('*', 'AMOUNT' => 'STAT.AMOUNT', 'AMOUNT_UNIQ' => 'STAT.AMOUNT_UNIQ'),
    'filter' => array('FROM' => 'DfjOl') /* DfjOl - код короткой ссылки */
)); 
if($arLink = $dbrLink->fetch())
{
   echo '<pre>';
   print_r($arLink);
   echo '</pre>';   
}

StatTable

Работа c данными хранимыми в базе данных по статистике переходов по коротким сcылкам.

$oStatTable = new \Bxmaker\ShortLink\StatTable();

Поля таблицы:

  • ID - автоинкримент, идентификтаор записи в статистике
  • LINK_ID - ID ссылки
  • DATE - дата фиксирвоания перехода объект \Bitrix\Main\Type\Date()
  • COUNT - количество переходов на конкретную дату
  • COUNT_UNIQ - количество уникальных переходов на конкретную дату

Дополнительные поля:

  • NT - для подсчета количества записей по ссылке в таблице со статистикой
  • AMOUNT - для подсчета суммарного количества переходов по ссылке
  • AMOUNT - для подсчета суммарного количества УНИКАЛЬНЫХ переходов по ссылке

Stat

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

setView()

Метод записывает переход по короткой ссылке. Если пропустить 2й параметр метода, то в методе автоматически будет проверено наличие соответствующей куки у пользователя.

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

$oStat = new \Bxmaker\ShortLink\Stat();
$linkId = 1; 

$oStat->setView($linkId); 

// можно передать 2й парамтер со значением `true`, чтобы засчитать переход как уникальный. 
$oStat->setView($linkId, true); 

clear()

Метод используется для сброса статистики по конкретной ссылке

$oStat = new \Bxmaker\ShortLink\Stat();
$linkId = 1; 

$oStat->clear($linkId); 

Получение статики за сегодня и вчера

$oStat = new \Bxmaker\ShortLink\Stat();
$linkId = 1;
$dbr = $oStatTable->getList(array(
    'select' => array('*'),
    'filter' => array(
        'LINK_ID' => $linkId,
        '>DATE' => new \Bitrix\Main\Type\Date(date("Y-m-d", strtotime("-1 day")), 'Y-m-d')
    ),
    'order' => array('DATE' => 'ASC')
));
while ($ar = $dbr->Fetch()) {
   echo '<pre>';
   print_r($ar);
   echo '</pre>';
}