Zasady dotyczące szablonów niestandardowych

Zasady są stosowane na stronie internetowej. Po uruchomieniu kontenera na stronie zasady są stosowane do definicji szablonów niestandardowych w Menedżerze tagów, aby kontrolować sposób użycia określonych funkcji. Zasady są implementowane za pomocą interfejsu gtag('policy', ...) API.

Interfejs API gtag('policy', ...) wymaga definicji obiektów dataLayer i gtag(). Upewnij się, że dataLayer i gtag() są zdefiniowane w kodzie przed wywołaniem gtag('policy', ...) w skrypcie:

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

Aby ustawić zasady dotyczące uprawnień do szablonów niestandardowych za pomocą interfejsu API gtag('policy', ...) na stronie internetowej:

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

Argument <permissionId> to jeden z obsługiwanych typów uprawnień, np. inject_script. Zasada zostanie wywołana za każdym razem, gdy kontener będzie chciał sprawdzić, czy to uprawnienie jest dozwolone.

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

Określ wartość 'all', aby mieć dostęp do wszystkich kontroli zgodności z zasadami.

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

Trzeci argument – <function> – to funkcja implementująca wskazaną zasadę z tym podpisem:

function(containerId, permissionId, data) {...}
  • containerId to identyfikator kontenera Menedżera tagów, np. 'GTM-1234'.
  • permissionId to ciąg znaków określający typ zasady do sprawdzenia.
  • data to obiekt zawierający wszelkie istotne informacje dotyczące wspomnianego typu uprawnień, np. 'url' w przypadku uprawnień 'send_pixel'.

Funkcja zasad odrzuca żądanie uprawnień, gdy zwraca false lub zgłasza wyjątek. Wszystkie włączone typy string lub Error będą widoczne w sekcji Błędy w panelu debugowania, gdy włączysz tryb podglądu. W przypadku zarejestrowania wielu kontroli, każde wywołanie jest wywoływane i każdy z nich może odrzucić żądanie dotyczące zasad.

Ten przykład tworzy zasadę, która sprawdza uprawnienie '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';
  }
});

W tym przykładzie użyto słowa kluczowego 'all' do sprawdzenia wielu scenariuszy naruszenia zasad:

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