-
Notifications
You must be signed in to change notification settings - Fork 0
Tagging an AngularJS site
Before using our tagging directives, please make sure you have initialised the AT Internet JavaScript Tracker and selected the desired plugins from within the Tag Composer interface.
The tagging directive “ui.atinternet.smartTag.directive” allows, by default, the tagging of pages and clicks. For this, it contains:
- Two methods, “pageSend()” and “clickSend()”, declared in a service “tagService” that can be used from the JavaScript code of your controllers,
- Two directives “tagClick” and “tagpage” that can be used from the HTML code of your views.
- Integration of the tagging directive
You must add the following tagging module code in a JavaScript file (ex: “moduletag.js”) within your AngularJS application.
'use strict';
/**
* @ngdoc directive
* @name ui.atinternet.smartTag.directive:smartTag
* @description
* # smartTag
*
* smartTag module.
*/
angular.module('ui.atinternet.smartTag', [])
.directive('tagClick', function (tagService) {
var _setDeclaredProperty = function(obj, scope, key) {
if(typeof scope[key] !== 'undefined') {
obj[key] = scope[key];
}
};
var _addPropertiesToObject = function(scope, elem){
var obj = {
elem: elem,
name: scope.name,
level2: scope.level2,
type: scope.action
};
_setDeclaredProperty(obj, scope, 'chapter1');
_setDeclaredProperty(obj, scope, 'chapter2');
_setDeclaredProperty(obj, scope, 'chapter3');
return obj;
};
return {
restrict: 'A',
scope: {
name: '@tagName',
chapter1: '@tagChapter1',
chapter2: '@tagChapter2',
chapter3: '@tagChapter3',
level2: '@tagLevel2',
action: '@tagAction'
},
link: function postLink(scope, element) {
var obj = _addPropertiesToObject(scope, element[0]);
tagService.clickSend(obj);
}
};
})
.directive('tagpage', function (tagService) {
return {
restrict: 'E',
scope: {
tagData : "="
},
link: function postLink(scope) {
tagService.pageSend(scope.tagData);
}
};
})
.service('tagService', function () {
var _tag = new ATInternet.Tracker.Tag();
this.getTag = function() {
return _tag;
};
this.pageSend = function(obj) {
_tag.page.set(obj);
_tag.dispatch();
};
this.clickSend = function(obj) {
_tag.clickListener.send(obj);
};
});This module contains:
- Two directives “tagClick” and “tagpage” useful for click and page tagging in the tags contained in the views of your Web application,
- A tagging service including:
- A “getTag()”method that returns an instance of the Tracker,
- A “pageSend()” method that takes an object as a parameter, useful for sending page hits from the controller code in JavaScript,
- A “clickSend()” method that takes an object as a parameter, useful for sending click hits from the controller code in JavaScript.
It’s possible to use the tracker’s standard JavaScript methods in the controller code.
- Addition of a reference to the “smartTag” module in the application’s main module
'use strict';
/**
* @ngdoc overview
* @name angularApp
* @description
* # angularApp
*
* Main module of the application.
*/
angular
.module('angularApp', [
'ngAnimate',
'ngCookies',
'ngResource',
'ngRoute',
'ngSanitize',
'ngTouch',
'ui.atinternet.smartTag'
])
.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.when('/about', {
templateUrl: 'views/about.html',
controller: 'AboutCtrl'
})
.otherwise({
redirectTo: '/'
});
});- Adding “smarttag.js” scripts (Tracker code) and “moduletag.js” (module code) in your application’s main page.
<!-- atinternet:js -->
<script src="scripts/atinternet/moduletag.js"></script>
<script src="scripts/atinternet/smarttag.js"></script>
<!-- endatinternet -->You may replace the local “smarttag.js” file with a resource from the AT Internet CDN if needed:
<script src="https://tag.aticdn.net/YOURSITEID/smarttag.js"></script>To tag a page, you must add the following tag in the HTML code of your view:
<tagpage tag-data="{name: 'main', chapter1:'chap1', chapter2:'chap2', chapter3:'chap3', level2: '1', customObject: {arg1:3, arg2:'4'}}"></tagPage>The tag for page tagging must have “tagPage” as its label. This tag contains a “tag-data” attribute that has, as a value, an object in the form of a character string with the different page parameters to be measured.
To tag a click, you must add the following attributes in the clickable tags of your view:
<a tag-click tag-name="clickName" tag-chapter1="chap1" tag-chapter2="chap2" tag-chapter3="chap3" tag-level2="1" tag-action="action" ng-href="URL">Link</a>Click tagging is done by the addition of different attributes:
- “tag-click” allowing the association of the click tagging directive to the tag (mandatory),
- “tag-chapter1” allowing the declaration of a first-level chapter,
- “tag-chapter2” allowing the declaration of a second-level chapter,
- “tag-chapter3” allowing the declaration of a third-level chapter,
- “tag-level2” allowing the declaration of a level 2 site,
- “tag-action” allowing the declaration of a click type.
To tag a page, you must call the method “pageSend()” in the JavaScript code of your controller:
'use strict';
/**
* @ngdoc function
* @name angularApp.controller:MainCtrl
* @description
* # MainCtrl
* Controller of the angularApp
*/
angular.module('angularApp')
.controller('MainCtrl', function ($scope, tagService) {
$scope.awesomeThings = [
'HTML5 Boilerplate',
'AngularJS',
'Karma'
];
tagService.pageSend({name: 'pageName', chapter1: 'chap1', chapter2: 'chap2', chapter3: 'chap3', level2: '1', customObject: {arg1: 3, arg2: '4'}});
});To tag a click, you must call the method “clickSend()” in the JavaScript code of your controller:
'use strict';
/**
* @ngdoc function
* @name angularApp.controller:MainCtrl
* @description
* # MainCtrl
* Controller of the angularApp
*/
angular.module('angularApp')
.controller('MainCtrl', function ($scope, tagService) {
$scope.awesomeThings = [
'HTML5 Boilerplate',
'AngularJS',
'Karma'
];
var link = document.createElement('a');
link.href='javascript:void(0)';
tagService.clickSend({elem: link, name: 'clickName', chapter1: 'chap1', chapter2: 'chap2', chapter3: 'chap3', level2: '1', type: 'navigation'});
link.click();
});You must add a reference to the tagging service “tagService” in the function passed as a parameter of the controller.
Last update: 11/03/2019
-
Data API
- Data flow
- Advice optimizations data flow
- Error codes data flow
- Faq data flow
- General information data flow
- Technical information data flow
- Reporting API v3
- Getting started
- Methods
- Parameters
- Technical information
- REST API
- Campaigns
- Custom variables
- Getting started rest
- Methods rest
- Response structure parameters rest
- Fixed periods
- Parameters compatibility
- Relative periods
- Structure of the response
- “code” parameter
- “columns” parameter
- “evo” parameter
- “filter” parameter
- “include” parameter
- “lng” parameter
- “max-results” parameter
- “page-num” parameter
- “period” parameter
- “period” parameter: “H” v. “He” & “MN” v. “MNe”
- “retention” parameter
- “segmentdesc” parameter
- “segment” parameter
- “sep” parameter
- “sort” parameter
- “space” parameter
- Technical specifications rest
- Data flow
-
Data collection
- Android
- Advanced features
- Campaigns
- Changelog
- Content
- Ecommerce
- Getting started
- Users
- Apple
- Advanced features
- Campaigns
- Changelog
- Content
- Ecommerce
- Getting started
- Users
- General
- Cddc renew staging process
- Changelog
- Craft your hit
- Encoded parameters
- Server side cookie management
- Supported taggings
- Tagging deletion
- Utilisation of dispatch sdks
- JavaScript
- Advanced features
- Campaigns
- Changelog
- Content
- Ecommerce
- Getting started
- Partners javascript
- Users
- Piano Analytics
- Event tagging piano analytics
- Getting started piano analytics
- Piano analytics tagging
- Feeding piano analytics with as2 tagging
- Tagging custom properties sdk
- Android