Özel şablon politikaları

Politikalar, web sayfasında uygulanır. Sayfada bir kapsayıcı çalıştığında, belirli özelliklerin ve işlevlerin nasıl kullanılabileceğini kontrol etmek için Etiket Yöneticisi'nin özel şablon tanımlarına politikalar uygulanır. Politikalar gtag('policy', ...) API ile uygulanır.

gtag('policy', ...) API, dataLayer ve gtag() için tanımlar gerektirir. gtag('policy', ...) öğesinin sonraki komutta çağrılmasından önce kodunuzda dataLayer ve gtag() öğelerinin tanımlandığından emin olun:

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

Özel şablon izinleriyle ilgili politikaları belirlemek için bir web sayfasında gtag('policy', ...) API'sini kullanın:

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

<permissionId> bağımsız değişkeni, desteklenen izin türlerinden herhangi biridir (ör. inject_script Bir kapsayıcı, bu izne izin verilip verilmediğini kontrol etmek istediğinde politika çağrılır.

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

Tüm politika kontrolleriyle etkileşime geçmek için 'all' değerini belirtin.

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

Üçüncü bağımsız değişken (<function>), belirtilen politikayı şu imzayla uygulayan bir işlevdir:

function(containerId, permissionId, data) {...}
  • containerId, Etiket Yöneticisi kapsayıcı kimliğidir (ör. 'GTM-1234'.
  • permissionId, kontrol edilecek politika türünü belirten bir dizedir.
  • data, belirtilen izin türüyle alakalı bilgileri içeren bir nesnedir (ör. 'send_pixel' izni için 'url'.

Bir politika işlevi, false değerini döndürdüğünde veya bir istisna oluşturduğunda izin isteğini reddeder. string veya Error türündeki istisnalar, önizleme modu etkinleştirildiğinde hata ayıklama bölmesinin Hatalar bölümünde görünür. Birden fazla politika kontrolü kaydedildiğinde her kontrol çağrılır ve her kontrol bir politika isteğini reddedebilir.

Bu örnek, 'inject_script' iznini kontrol eden bir politika oluşturur:

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';
  }
});

Bu örnekte, birden çok politika senaryosunu kontrol etmek için 'all' anahtar kelimesi kullanılmaktadır:

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;
  }
});