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

Các chính sách được triển khai trên một trang web. Khi một vùng chứa chạy trên trang, các chính sách được áp dụng cho định nghĩa mẫu tùy 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 bạn đã xác định dataLayergtag() trong mã trước khi gtag('policy', ...) được gọi sau trong tập lệnh:

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

Dùng gtag('policy', ...) API trên một trang web để đặt chính sách cho quyền mẫu tuỳ chỉnh:

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

Đối số <permissionId> là một trong các 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 vùng chứa muốn kiểm tra xem quyền đó có được phép hay không.

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

Chỉ định 'all' để tương tác với tất cả nội dung 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 được chỉ định bằng chữ ký này:

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

Hàm chính sách từ chối một yêu cầu cấp quyền khi trả về false hoặc gửi một trường hợp ngoại lệ. Mọi ngoại lệ với 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 được bật. Khi đăng ký nhiều lần kiểm tra chính sách, mỗi lần kiểm tra sẽ được gọi và mỗi lần kiểm tra có khả năng từ chối một yêu cầu chính sách.

Ví dụ này tạo 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;
  }
});