%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/landing/lib/hook/page/ |
| Current File : //home/bitrix/www/bitrix/modules/landing/lib/hook/page/gacounter.php |
<?php
namespace Bitrix\Landing\Hook\Page;
use \Bitrix\Landing\Field;
use \Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);
class GaCounter extends \Bitrix\Landing\Hook\Page
{
/**
* Map of the field.
* @return array
*/
protected function getMap()
{
return array(
'USE' => new Field\Checkbox('USE', array(
'title' => Loc::getMessage('LANDING_HOOK_GACOUNTER_USE')
)),
'COUNTER' => new Field\Text('COUNTER', array(
'title' => Loc::getMessage('LANDING_HOOK_GACOUNTER_COUNTER'),
'placeholder' => Loc::getMessage('LANDING_HOOK_GACOUNTER_PLACEHOLDER')
)),
'SEND_CLICK' => new Field\Checkbox('SEND_CLICK', array(
'title' => Loc::getMessage('LANDING_HOOK_GACOUNTER_SEND_CLICK')
)),
'SEND_SHOW' => new Field\Checkbox('SEND_SHOW', array(
'title' => Loc::getMessage('LANDING_HOOK_GACOUNTER_SEND_SHOW')
))
);
}
/**
* Enable or not the hook.
* @return boolean
*/
public function enabled()
{
return $this->fields['USE']->getValue() == 'Y';
}
/**
* Exec or not hook in edit mode.
* @return true
*/
public function enabledInEditMode()
{
$request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
return $request->get('landing_mode') == 'preview';
}
/**
* Exec hook.
* @return void
*/
public function exec()
{
$counter = \htmlspecialcharsbx(trim($this->fields['COUNTER']));
$counter = \CUtil::jsEscape($counter);
if ($counter)
{
\Bitrix\Main\Page\Asset::getInstance()->addString(
'<!-- Global Site Tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=' . $counter . '" data-skip-moving="true"></script>
<script type="text/javascript" data-skip-moving="true">
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments)};
gtag(\'js\', new Date());
gtag(\'config\', \'' . $counter . '\');
</script>'
);
}
// send analytics
$sendData = array();
if ($this->fields['SEND_CLICK']->getValue() == 'Y')
{
$sendData[] = 'click';
}
if ($this->fields['SEND_SHOW']->getValue() == 'Y')
{
$sendData[] = 'show';
}
if (!empty($sendData))
{
\Bitrix\Landing\Manager::setPageView(
'BodyTag',
' data-event-tracker=\'' . json_encode($sendData) . '\''
);
}
}
}