هل من الممكن بطريقة ما تمرير كائن postStream json الأولي إلى طبقة بيانات GTM؟

هل من الممكن بطريقة ما تمرير كائن تدفق المنشور الأول لصفحات المواضيع إلى طبقة بيانات GTM دون إجراء طلب Ajax آخر كما أفعل حاليًا كحل بديل غير مثالي؟

<script type="text/discourse-plugin" version="0.8">
const currentUser = api.getCurrentUser();
let userId;

if (currentUser) {
    userId = currentUser.id;
}
else
{
    userId = 0;
}

var getJSON = function(url, callback) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'json';
    xhr.onload = function() {
      var status = xhr.status;
      if (status === 200) {
        callback(null, xhr.response);
      } else {
        callback(status, xhr.response);
      }
    };
    xhr.send();
};

api.onPageChange((url, title) => {
    if (url.match(/^\/t\//)) {

	    getJSON(url + '.json',
        function(err, data) {
          if (err !== null) {
              
            window.dataLayer.push({
                'event': 'pageChangeData',
                'userId': userId,
                'PageType': 'topic',
                'PageJson': false
            });
            
          } else {
        
            window.dataLayer.push({
                'event': 'pageChangeData',
                'userId': userId,
                'PageType': 'topic',
                'PageJson': data
            });
          }
          
        });
	    
	} else {
	    
	        window.dataLayer.push({
                'event': 'pageChangeData',
                'userId': userId,
                'PageType': 'notopic',
                'PageJson': false
            });
	}

});
</script>

إذا كنت تحاول إرسال البيانات المرتبطة بحدث في Discourse، فقد تتمكن من استخدام النهج الموضح في هذا المنشور: Integrating Google Tag Manager with Google Analytics - #44.

يجب أن يعمل إذا كنت تحاول التقاط أيًا من الأحداث التالية:

  • post:created
  • topic-notifications-button:changed
  • topic:created
  • page:bookmark-post-toggled
  • page:like-toggled
إعجابَين (2)