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

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

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

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