Chính sách mẫu tuỳ chỉnh

Chính sách được triển khai trên trang web. Khi một vùng chứa chạy trên trang, các chính sách sẽ được áp dụng cho định nghĩa mẫu tuỳ chỉnh của Trình quản lý thẻ để kiểm soát cách sử dụng một số tính năng và chức năng nhất định. Các chính sách được triển khai bằng API gtag('policy', ...).

API gtag('policy', ...) yêu cầu định nghĩa cho dataLayer và gtag(). Đảm bảo rằng dataLayergtag() được xác định trong mã của bạn trước khi gtag('policy', ...) được gọi sau này trong tập lệnh:

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

Dùng API gtag('policy', ...) trên một trang web để thiết lập chính sách cho các quyền đối với mẫu tuỳ chỉnh:

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

Đối số <permissionId> là một trong những loại quyền được hỗ trợ, ví dụ: inject_script. Chính sách này sẽ được gọi bất cứ khi nào một vùng chứa muốn kiểm tra xem quyền đó có được cho phép hay không.

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

Hãy chỉ định 'all' để tương tác với tất cả các bước kiểm tra chính sách.

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

Đối số thứ ba – <function> – là một hàm triển khai chính sách đã chỉ định bằng chữ ký này:

function(containerId, permissionId, data) {...}
  • Ví dụ: containerId là mã vùng chứa của Trình quản lý thẻ 'GTM-1234'.
  • permissionId là một chuỗi chỉ định loại chính sách cần kiểm tra.
  • data là một đối tượng chứa mọi thông tin liên quan cho loại quyền đã chỉ định, ví dụ: 'url' cho quyền 'send_pixel'.

Một hàm chính sách sẽ từ chối một yêu cầu cấp quyền khi yêu cầu này trả về false hoặc trả về một trường hợp ngoại lệ. Mọi trường hợp ngoại lệ thuộc loại string hoặc Error sẽ xuất hiện trong phần Lỗi của ngăn gỡ lỗi khi chế độ xem trước đang bật. Khi nhiều lượt kiểm tra chính sách được đăng ký, mỗi lượt kiểm tra sẽ được gọi và mỗi lượt kiểm tra đều có khả năng từ chối một yêu cầu về chính sách.

Sau đây là ví dụ về một chính sách kiểm tra quyền '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';
  }
});

Ví dụ này sử dụng từ khoá 'all' để kiểm tra nhiều trường hợp chính sách:

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