سياسات النماذج المخصصة

يتم تنفيذ السياسات على صفحة الويب. عند تشغيل حاوية على الصفحة، يتم تطبيق السياسات على تعريفات النماذج المُخصَّصة في "إدارة العلامات من Google" للتحكُّم في كيفية استخدام ميزات ووظائف معيَّنة. يتم تنفيذ السياسات من خلال واجهة برمجة تطبيقات gtag('policy', ...).

تتطلب واجهة برمجة تطبيقات gtag('policy', ...) تعريفات لطبقة البيانات وgtag(). تأكد من تحديد dataLayer وgtag() في شفرتك قبل استدعاء gtag('policy', ...) لاحقًا في النص البرمجي:

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

استخدِم واجهة برمجة تطبيقات gtag('policy', ...) على صفحة ويب لضبط سياسات أذونات النماذج المخصّصة:

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 هو رقم تعريف حاوية "إدارة العلامات"، مثل '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;
  }
});