Özel şablon politikaları

Politikalar bir web sayfasında uygulanır. Sayfada bir kapsayıcı çalıştırıldığı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', ...) komut dosyasının ilerleyen bölümlerinde çağrılmadan önce, kodunuzda dataLayer ve gtag() özelliklerinin tanımlandığından emin olun:

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

Bir web sayfasında gtag('policy', ...) API'yi kullanarak özel şablon izinlerine ilişkin politikalar belirleyin:

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

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

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

Tüm politika kontrolleriyle etkileşimde bulunmak 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 olan <function>, belirtilen politikayı bu imzayla uygulayan bir işlevdir:

function(containerId, permissionId, data) {...}
  • containerId, Etiket Yöneticisi kapsayıcı kimliğidir (ör. 'GTM-1234').
  • permissionId, kontrol edilecek politikanın türünü belirten bir dizedir.
  • data, belirtilen izin türü için 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 istisnada bulunduğunda izin isteğini reddeder. Önizleme modu etkinleştirildiğinde, hata ayıklama bölmesinin Hatalar bölümünde string veya Error türünde tüm istisnalar gösterilir. Birden fazla politika kontrolü kaydedildiğinde her kontrol çağrılır ve her kontrol bir politika isteğini reddedebilir.

Bu örnekte 'inject_script' iznini kontrol eden bir politika oluşturulmuştur:

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