Zasady dotyczące szablonów niestandardowych

Zasady są zaimplementowane na stronie internetowej. Gdy kontener działa na stronie, do definicji szablonów niestandardowych Menedżera tagów stosowane są zasady, które pozwalają kontrolować sposób wykorzystania określonych funkcji. Zasady są wdrażane za pomocą interfejsu API gtag('policy', ...).

Interfejs API gtag('policy', ...) wymaga definicji obiektu dataLayer i gtag(). Upewnij się, że w kodzie są zdefiniowane dataLayer i gtag(), zanim funkcja gtag('policy', ...) zostanie wywołana w dalszej części skryptu:

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

Użyj na stronie interfejsu API gtag('policy', ...), aby ustawić zasady dotyczące uprawnień do szablonów niestandardowych:

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

Argument <permissionId> to dowolny z obsługiwanych typów uprawnień, np. inject_script Ta zasada jest wywoływana za każdym razem, gdy kontener chce sprawdzić, czy dane uprawnienie jest dozwolone.

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

Określ 'all', aby obsługiwać wszystkie testy zgodności z zasadami.

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

Trzeci argument – <function> – to funkcja, która implementuje 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, który zawiera wszelkie informacje istotne dla określonego typu uprawnień, np. 'url' za uprawnienie 'send_pixel'.

Funkcja zasad odrzuca prośbę o przyznanie uprawnień, gdy zwraca wartość false lub zgłasza wyjątek. Po włączeniu trybu podglądu wszystkie wyjątki typu string lub Error będą widoczne w sekcji Błędy panelu debugowania. W przypadku zarejestrowania wielu kontroli zgodności z zasadami wywoływana jest każda z nich i umożliwia odrzucenie żądania zgodności z zasadami.

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', aby sprawdzić kilka scenariuszy zgodności z zasadami:

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