कस्टम टेंप्लेट से जुड़ी नीतियां

नीतियां, वेब पेज पर लागू की जाती हैं. जब कोई कंटेनर पेज पर चलता है, तो Tag Manager के कस्टम टेंप्लेट की परिभाषाओं पर नीतियां लागू की जाती हैं. इससे, यह कंट्रोल किया जा सकता है कि कुछ सुविधाओं और फ़ंक्शन का इस्तेमाल कैसे किया जा सकता है. नीतियों को gtag('policy', ...) एपीआई की मदद से लागू किया जाता है.

gtag('policy', ...) API के लिए, dataLayer और gtag() की परिभाषाएं होनी चाहिए. पक्का करें कि स्क्रिप्ट में gtag('policy', ...) को बाद में कॉल करने से पहले, आपके कोड में dataLayer और gtag() तय कर दिए गए हैं:

window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

कस्टम टेंप्लेट की अनुमतियों के लिए नीतियां सेट करने के लिए, वेब पेज पर gtag('policy', ...) एपीआई का इस्तेमाल करें:

gtag('policy', <permissionId>, <function>)

<permissionId> आर्ग्युमेंट, इस्तेमाल की जा सकने वाली अनुमतियों में से कोई एक है, जैसे कि inject_script. जब भी कोई कंटेनर यह जांच करेगा कि उस अनुमति को अनुमति मिली है या नहीं, तो नीति को कॉल किया जाएगा.

gtag('policy', 'inject_script', function(containerId, permissionId, data) {
  // Specific inject_script check goes here.
});

नीति की सभी जांचों से इंटरैक्ट करने के लिए, 'all' के बारे में बताएं.

gtag('policy', 'all', function(containerId, permissionId, data) {
  // System-wide check goes here.
});

तीसरा तर्क—<function>—एक ऐसा फ़ंक्शन है जो बताई गई नीति को इस हस्ताक्षर के साथ लागू करता है:

function(containerId, permissionId, data) {...}
  • containerId, Tag Manager का कंटेनर आईडी है, उदाहरण के लिए 'GTM-1234'.
  • permissionId एक ऐसी स्ट्रिंग है जिससे पता चलता है कि किस तरह की नीति की जांच की जानी है.
  • data एक ऐसा ऑब्जेक्ट है जिसमें इस तरह की अनुमति से जुड़ी काम की जानकारी होती है, जैसे कि 'send_pixel' की अनुमति पाने के लिए 'url'.

जब कोई नीति फ़ंक्शन false दिखाता है या कोई अपवाद दिखाता है, तो वह अनुमति के अनुरोध को अस्वीकार कर देता है. झलक मोड चालू होने पर, डीबग पैनल के गड़बड़ियां सेक्शन में, string या Error टाइप वाला कोई भी अपवाद दिखेगा. जब एक से ज़्यादा नीति जांच रजिस्टर होती हैं, तो हर एक चेक को कॉल किया जाता है और हर चेक में नीति से जुड़े अनुरोध को अस्वीकार किया जा सकता है.

इस उदाहरण में एक ऐसी नीति बनाई गई है जो 'inject_script' अनुमति की जांच करती है:

gtag('policy', 'inject_script', function(containerId, permissionId, data) {

  // reference the url of the script to be injected
  let url = data.url || '';

  // if the url of the injected script exactly matches, allow it.
  // otherwise throw an error
  if (url === 'https://scripts.example.com/analytics.js') {
    return true;
  } else {
    throw 'Only permitted to inject https://scripts.example.com/analytics.js';
  }
});

इस उदाहरण में, 'all' कीवर्ड का इस्तेमाल करके, नीति से जुड़ी कई स्थितियों की जांच की गई है:

gtag('policy', 'all', function(containerId, permissionId, data) {

  // Only set policy for 1 specific container.
  // This enables other containers loaded on the page to
  // operate without restrictions on permissions.
  if (container != 'GTM-4321') return true;

  // Since the policy is 'all', adjust permissions conditionally.
  switch (permissionId) {

    case 'send_pixel':
      return true;

    case 'write_globals':
      return data.key && data.key == '_gaq';

    case 'inject_script':
      let url = data.url || '';
      if (url.indexOf('https://example.com') != 0)
        throw 'Only example.com scripts are permitted';

    default:
      // IT staff decides that all unknown permissions
      // are rejected.
      return false;
  }
});