ga.js এর ভূমিকা (উত্তরাধিকার)

ga.js হল একটি JavaScript লাইব্রেরি যা পরিমাপ করার জন্য ব্যবহারকারীরা কীভাবে আপনার ওয়েবসাইটের সাথে ইন্টারঅ্যাক্ট করে। এটি একটি উত্তরাধিকার গ্রন্থাগার। আপনি যদি গুগল অ্যানালিটিক্সের সাথে শুরু করে থাকেন তবে আপনার সর্বশেষ ট্র্যাকিং লাইব্রেরি, analytics.js ব্যবহার করা উচিত।

ট্র্যাকিং কোড কুইকস্টার্ট

Analytics স্নিপেট হল জাভাস্ক্রিপ্ট কোডের একটি ছোট অংশ যা আপনি আপনার পৃষ্ঠাগুলিতে পেস্ট করেন। এটি পৃষ্ঠায় ga.js ঢোকানোর মাধ্যমে Google Analytics ট্র্যাকিং সক্রিয় করে। আপনার পৃষ্ঠাগুলিতে এটি ব্যবহার করতে, নীচের কোড স্নিপেটটি অনুলিপি করুন, আপনার ওয়েব সম্পত্তি ID দিয়ে UA-XXXXX-X প্রতিস্থাপন করুন৷ এই স্নিপেটটি আপনার ওয়েবসাইটের টেমপ্লেট পৃষ্ঠায় আটকান যাতে এটি ক্লোজিং </head> ট্যাগের আগে উপস্থিত হয়।

আপনি যদি মৌলিক পৃষ্ঠা ট্র্যাকিং এর চেয়ে বেশি কিছু করতে চান, তাহলে API-এ উপলব্ধ পদ্ধতির তালিকার জন্য ট্র্যাকিং রেফারেন্স দেখুন এবং অ্যাসিঙ্ক্রোনাস সিনট্যাক্স ব্যবহার করার বিষয়ে বিস্তারিত জানার জন্য ব্যবহার নির্দেশিকা দেখুন। ট্র্যাকিং সেট আপ করার জন্য ধাপে ধাপে নির্দেশাবলীর জন্য, ট্র্যাকিং সেট আপ করার বিষয়ে সহায়তা কেন্দ্র নিবন্ধটি দেখুন।

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

উপরের স্নিপেটটি একটি পৃষ্ঠাকে অ্যাসিঙ্ক্রোনাসভাবে ট্র্যাক করার জন্য প্রয়োজনীয় ন্যূনতম কনফিগারেশনের প্রতিনিধিত্ব করে। এটি পৃষ্ঠার ওয়েব প্রপার্টি আইডি সেট করতে _setAccount ব্যবহার করে এবং তারপর Google Analytics সার্ভারে ট্র্যাকিং ডেটা ফেরত পাঠাতে _trackPageview কল করে।

গুরুত্বপূর্ণ: আপনি যদি আপনার পৃষ্ঠাগুলি ঐতিহ্যগত স্নিপেট থেকে সর্বশেষ, অ্যাসিঙ্ক্রোনাস সংস্করণে আপডেট করে থাকেন, তাহলে আপনার আগে বিদ্যমান ট্র্যাকিং স্নিপেটটি সরিয়ে ফেলা উচিত। আমরা একই পৃষ্ঠায় উভয় স্নিপেট একসাথে ব্যবহার করার পরামর্শ দিই না। মাইগ্রেশন নির্দেশাবলীর জন্য, Async-এ স্থানান্তর করা দেখুন।

কিভাবে অ্যাসিঙ্ক্রোনাস সিনট্যাক্স কাজ করে

_gaq অবজেক্ট হল অ্যাসিঙ্ক্রোনাস সিনট্যাক্সকে সম্ভব করে তোলে। এটি একটি সারি হিসাবে কাজ করে, যা একটি ফার্স্ট-ইন, ফার্স্ট-আউট ডেটা স্ট্রাকচার যা API কলগুলি সংগ্রহ করে যতক্ষণ না ga.js সেগুলি চালানোর জন্য প্রস্তুত হয়৷ সারিতে কিছু যোগ করতে, _gaq.push পদ্ধতি ব্যবহার করুন।

একটি API কলকে সারিতে পুশ করতে, আপনাকে অবশ্যই এটিকে প্রচলিত জাভাস্ক্রিপ্ট সিনট্যাক্স থেকে একটি কমান্ড অ্যারেতে রূপান্তর করতে হবে। কমান্ড অ্যারেগুলি হল জাভাস্ক্রিপ্ট অ্যারে যা একটি নির্দিষ্ট বিন্যাসের সাথে সামঞ্জস্যপূর্ণ। একটি কমান্ড অ্যারের প্রথম উপাদান হল ট্র্যাকার অবজেক্ট পদ্ধতির নাম যা আপনি কল করতে চান। এটি একটি স্ট্রিং হতে হবে. বাকি উপাদানগুলি হল আর্গুমেন্ট যা আপনি ট্র্যাকার অবজেক্ট পদ্ধতিতে পাস করতে চান। এগুলো যেকোনো জাভাস্ক্রিপ্ট মান হতে পারে।

নিম্নলিখিত কোডটি ঐতিহ্যগত সিনট্যাক্স ব্যবহার করে _trackPageview() কে কল করে:

var pageTracker = _gat._getTracker('UA-XXXXX-X');
pageTracker._trackPageview();

অ্যাসিঙ্ক্রোনাস সিনট্যাক্সের সমতুল্য কোডের জন্য _gaq.push এ দুটি কল প্রয়োজন।

_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);

অ্যাসিঙ্ক্রোনাস সিনট্যাক্সে, ট্র্যাকার অবজেক্ট তৈরি করা উহ্য, কিন্তু আমাদের এখনও ট্র্যাকারের জন্য ওয়েব সম্পত্তি আইডি সেট করার একটি উপায় প্রয়োজন। এই ক্ষমতা প্রদানের জন্য _setAccount পদ্ধতি যোগ করা হয়েছে। অন্যান্য সমস্ত ট্র্যাকার অবজেক্ট পদ্ধতিগুলি অ্যাসিঙ্ক্রোনাস এবং প্রথাগত ট্র্যাকিং উভয় ক্ষেত্রেই একই। শুধু সিনট্যাক্স ভিন্ন।

অ্যাসিঙ্ক্রোনাস সিনট্যাক্স সম্পর্কে আরও তথ্যের জন্য, _gaq.push পদ্ধতির জন্য ট্র্যাকিং রেফারেন্স দেখুন।

উপরে ফিরে যাও

HTML ইভেন্ট হ্যান্ডলারের সাথে ট্র্যাকিং

অসিঙ্ক্রোনাস ট্র্যাকিং সিনট্যাক্সটি DOM ইভেন্ট হ্যান্ডলারের মধ্যে থেকেও ব্যবহার করা উচিত। উদাহরণস্বরূপ, নিচের বোতামটি ক্লিক করলে একটি ইভেন্ট তৈরি করে।

<button onclick="_gaq.push(['_trackEvent', 'button3', 'clicked'])"></button>

এমনকি যদি ব্রাউজার ga.js লোড করা শেষ করার আগে এই বোতামটি ক্লিক করা হয়, ইভেন্টটি ক্যাপচার করা হবে এবং শেষ পর্যন্ত কার্যকর করা হবে৷ ঐতিহ্যগত ট্র্যাকিং ব্যবহার করে, ব্রাউজার এই পরিস্থিতিতে একটি ব্যতিক্রম নিক্ষেপ করতে পারে।

উপরে ফিরে যাও

সারিতে ফাংশন পুশ করা

কমান্ড অ্যারে ছাড়াও, আপনি ফাংশন অবজেক্টগুলিকে _gaq সারিতে পুশ করতে পারেন। ফাংশনগুলি যেকোন নির্বিচারে জাভাস্ক্রিপ্ট ধারণ করতে পারে এবং কমান্ড অ্যারেগুলির মতো, সেগুলিকে _gaq এ ঠেলে দেওয়া হয় সেই ক্রমে চালানো হয়। এই কৌশলটি ট্র্যাকিং API গুলিকে কল করার জন্য দরকারী যা মান প্রদান করে৷ উদাহরণস্বরূপ, নিম্নলিখিত কোডটি একটি লিঙ্কার URL তৈরি করে এবং ফলাফলের সাথে একটি লিঙ্কের জন্য href প্রপার্টি সেট করে।

_gaq.push(function() {
  var pageTracker = _gat._getTracker('UA-XXXXX-X');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});

উপরের উদাহরণটি একটি ট্র্যাকার অবজেক্ট তৈরি করতে _gat ব্যবহার করে, কিন্তু যেহেতু এটি একটি স্থানীয় ভেরিয়েবলে বরাদ্দ করা হয়েছে, ফাংশনের বাইরের কোড এটি ব্যবহার করতে পারে না। যদিও এটি গ্রহণযোগ্য, আপনি একটি স্থায়ী, বিশ্বব্যাপী অ্যাক্সেসযোগ্য বস্তু তৈরি করতে _gat._createTracker পদ্ধতি ব্যবহার করতে পারেন। নিম্নলিখিত কোড প্রদর্শন করে কিভাবে এটি কাজ করবে।

_gaq.push(function() {
  var pageTracker = _gat._createTracker('UA-XXXXX-X', 'myTracker');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});

_gaq.push(['myTracker._trackPageview']);

উপরের উদাহরণটি ফাংশনের ভিতরে একটি অ্যাসিঙ্ক্রোনাস ট্র্যাকার তৈরি করে এবং তারপর কমান্ড অ্যারেতে নাম দ্বারা এটিকে উল্লেখ করে।

বিপরীত ব্যবহারের ক্ষেত্রেও সম্ভব। উদাহরণস্বরূপ, আপনি যদি পূর্বে পুশ করা কমান্ড অ্যারের মাধ্যমে তৈরি একটি অ্যাসিঙ্ক্রোনাস ট্র্যাকার অবজেক্ট ব্যবহার করতে চান, তাহলে _gat._getTrackerByName পদ্ধতি ব্যবহার করুন। নিম্নলিখিত কোড এটি কিভাবে কাজ করে তা প্রদর্শন করে।

_gaq.push(['myTracker._setAccount', 'UA-XXXXX-X']);

_gaq.push(function() {
  var pageTracker = _gat._getTrackerByName('myTracker');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});

উপরে ফিরে যাও

এক ধাক্কা, একাধিক কমান্ড

প্রতিটি কলের জন্য _gaq.push(...) টাইপ করার পরিবর্তে, আপনি একবারে আপনার সমস্ত কমান্ড পুশ করতে পারেন। নিম্নলিখিত কোড এই কৌশল প্রদর্শন করে.

_gaq.push(
  ['_setAccount', 'UA-XXXXX-X'],
  ['_setDomainName', 'example.com'],
  ['_setCustomVar', 1, 'Section', 'Life & Style', 3],
  ['_trackPageview']
);

এটি কাজ করে কারণ _gaq.push পদ্ধতিটি Array.push পদ্ধতির অনুকরণ করে, যা একটি আহ্বানের সাথে একাধিক আইটেম পুশ করার অনুমতি দেয়।

উপরে ফিরে যাও

স্নিপেট বিভক্ত করা

আপনি যদি পৃষ্ঠার নীচে অ্যানালিটিক্স স্নিপেট রাখতে পছন্দ করেন তবে আপনার জানা উচিত যে আপনাকে পুরো স্নিপেটটি নীচে রাখতে হবে না। আপনি এখনও স্নিপেটকে অর্ধেক ভাগ করে অ্যাসিঙ্ক্রোনাস লোডিংয়ের বেশিরভাগ সুবিধা রাখতে পারেন—প্রথম অর্ধেকটি পৃষ্ঠার শীর্ষে রাখুন এবং বাকিগুলি নীচে নিয়ে যান। যেহেতু ট্র্যাকিং স্নিপেটের প্রথম অংশটি পৃষ্ঠা রেন্ডারিং-এর উপর সামান্য বা কোন প্রভাব ফেলে না, আপনি সেই অংশটিকে উপরের অংশে রেখে দিতে পারেন এবং নীচের অংশে ga.js ঢোকানো স্নিপেটের অংশটি রাখতে পারেন৷

অসিঙ্ক্রোনাস স্নিপেট অর্ধেক বিভক্ত সহ একটি পৃষ্ঠা এইরকম দেখতে পারে:

<html>

<head>
  <script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-XXXXX-X']);
    _gaq.push(['_trackPageview']);
  </script>
</head>

<body>
  <p>Page Content</p>

  <script src="some_random_script.js"></script>

  <p>Page Content</p>

  <script type="text/javascript">  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script> </body> </html>

কোডের উভয় অংশই তাদের নিজস্ব স্ক্রিপ্ট ট্যাগে মোড়ানো দরকার, তবে মূল অ্যাসিঙ্ক্রোনাস স্নিপেটের শেষ ছয় লাইনকে নীচে সরানো দরকার। সমস্ত লাইন যা _gaq তে পদ্ধতিগুলিকে ধাক্কা দেয় সেগুলি শীর্ষে থাকতে পারে।

উপরে ফিরে যাও

সাধারণ ক্ষতি এড়ানো

অ্যাসিঙ্ক্রোনাস বা প্রথাগত সিনট্যাক্স ব্যবহার করার সময়, নিম্নলিখিতগুলি মনে রাখবেন:

  • পদ্ধতির নাম কেস-সংবেদনশীল।
    আপনি সঠিক আবরণ ছাড়া একটি পদ্ধতির নাম ব্যবহার করলে, আপনার পদ্ধতি কল কাজ করবে না। উদাহরণ:
    _gaq.push(['_trackpageview']);   // bad
    _gaq.push(['_trackPageview']);   // good
  • সঠিক পদ্ধতির নাম ব্যবহার করুন।
    আপনার ট্র্যাকিং সঠিকভাবে কাজ না করলে, আপনি পদ্ধতির জন্য সঠিক নাম ব্যবহার করছেন তা নিশ্চিত করতে পরীক্ষা করুন। উদাহরণ:
    _gaq.push(['_setDomain', 'example.com']);       // bad
    _gaq.push(['_setDomainName', 'example.com']);   // good
    
  • উদ্ধৃতি সহ শুধুমাত্র স্ট্রিং পাস করা উচিত । অন্য সব ধরনের উদ্ধৃতি ছেড়ে দেওয়া উচিত.
    স্ট্রিং নয় এমন যেকোনো মান, যেমন বুলিয়ানস, অবজেক্ট লিটারেল, ফাংশন বা অ্যারে, উদ্ধৃতি চিহ্ন ছাড়াই পাস করা উচিত। শুধুমাত্র উদ্ধৃতি চিহ্ন ব্যবহার করুন যখন আপনি এমন কিছুতে পাস করছেন যাকে স্ট্রিং হিসাবে ব্যাখ্যা করা হয়। আপনি যদি প্রথাগত সিনট্যাক্স থেকে স্থানান্তরিত হন, তাহলে উদ্ধৃতি চিহ্ন ছাড়াই পাস করা যেকোন ফাংশন প্যারামিটার অসিঙ্ক্রোনাস সিনট্যাক্সে উদ্ধৃতিহীন থাকা উচিত। উদাহরণ:
    _gaq.push(['_setAllowLinker', 'false']);    // bad
    _gaq.push(['_setAllowLinker', false]);      // good
    
  • নিশ্চিত করুন যে স্ট্রিংগুলিতে অগ্রণী বা পিছনের হোয়াইটস্পেস নেই।
    উদাহরণ:
    _gaq.push(['_setAccount', ' UA-65432-1']);    // bad
    _gaq.push(['_setAccount', 'UA-65432-1']);     // good
    

উপরে ফিরে যাও

ট্র্যাকিং অক্ষম করা হচ্ছে

কিছু ক্ষেত্রে, কোড স্নিপেট অপসারণ না করেই একটি পৃষ্ঠায় Google Analytics ট্র্যাকিং কোড নিষ্ক্রিয় করার প্রয়োজন হতে পারে। উদাহরণস্বরূপ, আপনি এটি করতে পারেন যদি আপনার সাইটের গোপনীয়তা নীতিতে একজন দর্শকের Google Analytics ট্র্যাকিং থেকে অপ্ট-আউট করার ক্ষমতা অন্তর্ভুক্ত থাকে।

ga.js ট্র্যাকিং স্নিপেটে এখন একটি উইন্ডো প্রপার্টি রয়েছে যা true সেট করা হলে, ট্র্যাকিং স্নিপেটটিকে Google Analytics-এ ডেটা পাঠানো থেকে অক্ষম করে৷ যখন Google Analytics একটি কুকি সেট করার চেষ্টা করে বা Google Analytics সার্ভারগুলিতে ডেটা ফেরত পাঠায়, তখন এটি পরীক্ষা করবে যে এই বৈশিষ্ট্যটি true সেট করা আছে কিনা। যদি এটি হয়, তাহলে এটি একই প্রভাব ফেলবে যেমন ভিজিটর Google Analytics অপ্ট-আউট ব্রাউজার প্লাগইন ইনস্টল করেছেন

ট্র্যাকিং অক্ষম করতে, নিম্নলিখিত উইন্ডো সম্পত্তি সত্য সেট করুন:

window['ga-disable-UA-XXXXXX-Y'] = true;

যেখানে UA-XXXXXX-Y মানটি সেই ওয়েব প্রপার্টি আইডির সাথে মিলে যায় যেখানে আপনি ট্র্যাকিং অক্ষম করতে চান৷

ট্র্যাকিং কোড কল করার আগে এই উইন্ডো প্রপার্টি সেট করা আবশ্যক। আপনি Google Analytics ট্র্যাকিং নিষ্ক্রিয় করতে চান যেখানে প্রতিটি পৃষ্ঠায় এই সম্পত্তি সেট করা আবশ্যক. যদি সম্পত্তি সেট না করা হয় বা মিথ্যা সেট করা হয় তাহলে ট্র্যাকিং যথারীতি কাজ করবে।

সুতরাং, উদাহরণস্বরূপ, যদি একটি পৃষ্ঠায় আপনার Google Analytics ট্র্যাকিং কোড অন্তর্ভুক্ত থাকে:

_gaq.push['_setAccount', 'UA-123456-1']

এবং আপনি সেই ট্র্যাকিং কোডটিকে কুকি সেট করা বা Google Analytics-এ ডেটা ফেরত পাঠানো থেকে নিষ্ক্রিয় করতে চান, তারপর ট্র্যাকিং কোড কল করার আগে আপনি নিম্নলিখিত কোডটি ব্যবহার করবেন:

window['ga-disable-UA-123456-1'] = true;

আপনি যদি একাধিক ওয়েব প্রপার্টি আইডি সহ একটি পৃষ্ঠায় একাধিক ট্র্যাকার ব্যবহার করেন, তাহলে সেই পৃষ্ঠায় Google Analytics ট্র্যাকিং সম্পূর্ণরূপে অক্ষম করতে আপনাকে প্রতিটি ওয়েব সম্পত্তির জন্য সমতুল্য window['ga-disable-UA-XXXXXX-Y'] ভেরিয়েবলকে true হিসাবে সেট করতে হবে৷

উদাহরণ

এখানে কিছু কোডের একটি সহজ উদাহরণ রয়েছে যা আপনি আপনার ব্যবহারকারীদের জন্য অপ্ট-আউট কার্যকারিতা প্রদান করতে ব্যবহার করতে পারেন৷

প্রথমে, অপ্ট-আউট লজিক চালানোর জন্য আপনার সাইটে একটি নতুন HTML লিঙ্ক যোগ করুন:

<a href="javascript:gaOptout()">Click here to opt-out of Google Analytics</a>

তারপর ga.js কোড স্নিপেটের আগে কোডের নিম্নলিখিত স্নিপেট যোগ করুন। আপনার সাইটে ব্যবহৃত সম্পত্তিতে UA-XXXX-Y থেকে gaProperty এর মান প্রতিস্থাপন করা নিশ্চিত করুন। এটি একই মান যা আপনি _setAccount কমান্ডে পাস করেন।

<script>
// Set to the same value as the web property used on the site
var gaProperty = 'UA-XXXX-Y';

// Disable tracking if the opt-out cookie exists.
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf(disableStr + '=true') > -1) {
  window[disableStr] = true;
}

// Opt-out function
function gaOptout() {
  document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
  window[disableStr] = true;
}
</script>

যখন একজন ব্যবহারকারী অপ্ট-আউট HTML লিঙ্কে ক্লিক করেন, তখন কাস্টম gaOptout ফাংশনটি কার্যকর হবে৷ এটি ভবিষ্যতে দীর্ঘ সময়ের জন্য একটি কুকি সেট করবে এবং analytics.js ডেটা সংগ্রহ অক্ষম করবে৷ যখন একজন ব্যবহারকারী এই সাইটে ফিরে আসেন, তখন উপরের স্ক্রিপ্টটি অপ্ট-আউট কুকি সেট করা হয়েছে কিনা তা পরীক্ষা করবে। যদি এটি থাকে, তাহলে analytics.js ডেটা সংগ্রহও অক্ষম করা হবে।

জোর করে SSL (HTTPS)

Google Analytics কে সবসময় SSL ব্যবহার করে ডেটা পাঠাতে বাধ্য করতে, এমনকি অনিরাপদ পৃষ্ঠা (HTTP) থেকেও, _gat._forceSSL পদ্ধতি ব্যবহার করুন, যেমন এই উদাহরণে:

_gaq.push(['_setAccount', 'UA-12345-1']);
_gaq.push(['_gat._forceSSL']);       // Send all hits using SSL, even from insecure (HTTP) pages.
_gaq.push(['_trackPageview']);

উপরে ফিরে যাও