mirror of
https://github.com/vale981/Vulcan
synced 2025-03-10 12:36:39 -04:00
62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
import { getSetting } from 'meteor/vulcan:core';
|
|
import { addPageFunction, addInitFunction } from 'meteor/vulcan:events';
|
|
|
|
/*
|
|
|
|
We provide a special support for Google Analytics.
|
|
|
|
If you want to enable GA page viewing / tracking, go to
|
|
your settings file and update the 'public > googleAnalytics > apiKey'
|
|
field with your GA unique identifier (UA-xxx...).
|
|
|
|
*/
|
|
|
|
function googleAnaticsTrackPage() {
|
|
if (window && window.ga) {
|
|
window.ga('send', 'pageview', {
|
|
page: window.location.pathname,
|
|
});
|
|
}
|
|
return {};
|
|
}
|
|
|
|
// add client-side callback: log a ga request on page view
|
|
addPageFunction(googleAnaticsTrackPage);
|
|
|
|
function googleAnalyticsInit() {
|
|
// get the google analytics id from the settings
|
|
const googleAnalyticsId = getSetting('googleAnalytics.apiKey');
|
|
|
|
// the google analytics id exists & isn't the placeholder from sample_settings.json
|
|
if (googleAnalyticsId && googleAnalyticsId !== 'foo123') {
|
|
(function(i, s, o, g, r, a, m) {
|
|
i['GoogleAnalyticsObject'] = r;
|
|
(i[r] =
|
|
i[r] ||
|
|
function() {
|
|
(i[r].q = i[r].q || []).push(arguments);
|
|
}),
|
|
(i[r].l = 1 * new Date());
|
|
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
|
|
a.async = 1;
|
|
a.src = g;
|
|
m.parentNode.insertBefore(a, m);
|
|
})(
|
|
window,
|
|
document,
|
|
'script',
|
|
'//www.google-analytics.com/analytics.js',
|
|
'ga'
|
|
);
|
|
|
|
const cookieDomain = document.domain === 'localhost' ? 'none' : 'auto';
|
|
|
|
window.ga('create', googleAnalyticsId, cookieDomain);
|
|
|
|
// trigger first request once analytics are initialized
|
|
googleAnaticsTrackPage();
|
|
}
|
|
}
|
|
|
|
// init google analytics on the client module
|
|
addInitFunction(googleAnalyticsInit);
|