Всем привет.
Сегодня работая над задачей отключения счетчиков для dev и test окружений (счетчики необходимо оставить только на production, чтобы "не портить статистику") я обнаружил, что нет готового расширения для гибкого внедрения ЯндексМетрики.
Подумал, что это не есть хорошо и написал свой велосипед виджет.
Опубликовать в разделе с расширениями у меня не получилось, т.к. я еще "зеленый".
Поэтому решил поделиться решением на форуме. Может кому-то пригодится.
Код на гитхабе: github.com/lexeo/yii-yandex-metrika
*ссылка не кликабельна, т.к. я даже ссылку вставить не могу.
В принципе, не знаю, что можно еще туда добавить. Если будут идеи - welcome.
Все возможные параметры описаны свойствами класса. А статические допустимые значения - константами.
Примеры использования приведены в Readme файле репозитория.
Но часть выложу и сюда, чтобы сразу было понятно, с чем его едят.
/* @var $this CController */
$this->widget('ext.yii-yandex-metrika.EYandexMetrikaWidget', array(
'id' => 123456789,
'clickMap' => true,
'trackLinks' => true,
'accurateTrackBounce' => true,
));
Можно основные настройки вынести в конфиг:
'components' => array(
'widgetFactory' => array(
'widgets' => array(
'EYandexMetrikaWidget' => array(
// you can disable it while working on local machine
'enabled' => true,
'id' => 123456789,
'clickMap' => true,
'trackLinks' => true,
'accurateTrackBounce' => true,
'informerOptions' => array(
'backgroundColor' => '#427a4b', // hex color code
'textColor' => 1, // 0|1
'arrowColor' => 0, // 0|1
'dataType' => 'visits', // visits|pageviews|uniques
'type' => 1, // 0|1
),
),
),
),
),
и тогда во view/layout можно ограничиться простым вызовом:
$this->widget('ext.yii-yandex-metrika.EYandexMetrikaWidget');
Также виджет умеет рендерить Информер (изображение со статистикой)
/* @var $this CController */
$this->widget('ext.yii-yandex-metrika.EYandexMetrikaWidget', array(
'id' => 123456789,
'informer' => true,
'informerSize' => 1, // 1|2|3
'informerDataType' => 'uniques',
'informerArrowColor' => 1, // 0|1
// or
'informerOptions' => array(
'textColor' => 0,
'backgroundColor' => '#b7b7b7',
'size' => 2,
),
));
Собственно на этом все. Код очень прост. Поэтому любой без труда сможет в нем разобраться.
Конструктивная критика, исправления и предложения - очень даже приветствуются.