سیاست های قالب سفارشی

سیاست ها در یک صفحه وب اجرا می شوند. وقتی کانتینری در صفحه اجرا می‌شود، خط‌مشی‌هایی برای تعاریف الگوی سفارشی مدیر برچسب اعمال می‌شود تا نحوه استفاده از ویژگی‌ها و عملکردهای خاص را کنترل کند. سیاست ها با gtag('policy', ...) API پیاده سازی می شوند.

gtag('policy', ...) به تعاریف dataLayer و gtag() نیاز دارد. قبل از gtag('policy', ...) در اسکریپت مطمئن شوید که dataLayer و gtag() در کد شما تعریف شده اند:

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

از gtag('policy', ...) API در یک صفحه وب برای تنظیم خط مشی ها برای مجوزهای قالب سفارشی استفاده کنید:

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

آرگومان <permissionId> یکی از انواع مجوزهای پشتیبانی شده است، به عنوان مثال inject_script . این خط‌مشی زمانی فراخوانی می‌شود که ظرفی بخواهد بررسی کند که آیا این مجوز مجاز است یا خیر.

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

برای تعامل با همه چک‌های خط‌مشی 'all' مشخص کنید.

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

آرگومان سوم — <function> — تابعی است که خط مشی مشخص شده را با این امضا اجرا می کند:

function(containerId, permissionId, data) {...}
  • ContainerId شناسه containerId Tag Manager است، به عنوان مثال 'GTM-1234' .
  • permissionId رشته ای است که نوع خط مشی مورد بررسی را مشخص می کند.
  • data یک شی است که حاوی هر گونه اطلاعات مربوط به نوع مجوز مشخص شده است، به عنوان مثال 'url' برای مجوز 'send_pixel' .

یک تابع خط مشی، درخواست مجوز را زمانی که false را برمی گرداند یا یک استثنا ایجاد می کند، رد می کند. وقتی حالت پیش‌نمایش فعال باشد، هرگونه استثنا با یک نوع string یا Error در بخش خطاها در صفحه اشکال‌زدایی ظاهر می‌شود. هنگامی که چندین چک بیمه ثبت می شود، هر چک فراخوانی می شود و هر چک توانایی رد درخواست بیمه نامه را دارد.

این مثال یک خط مشی ایجاد می کند که مجوز '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';
  }
});

این مثال از کلمه کلیدی 'all' برای بررسی سناریوهای چندگانه خط مشی استفاده می کند:

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