Как запустить мой скрипт пользовательской статистики при каждой загрузке страницы?

Зная, что Discourse — это SPA, и ознакомившись с некоторой документацией по этой теме, я всё ещё не уверен, как это реализовать:

  • мы подключаем собственную JS-библиотеку в подвале сайта, которая взаимодействует с нашим решением для статистики
  • мы хотим дополнить статистику, инициируя пользовательские события при каждой «загрузке страницы», например, всякий раз, когда пользователь переходит на «новую» страницу

Псевдокод:

window.statistic = window.statistic || [];
window.statistic.push({
    action: "page.ready",
    data: {
        page: {
            path: "/c/new-to-this-forum-get-started-here/20/l/new",
            country: "WW",
            language: "en",
        },
        user: {
            country: "DE",
            loginStatus: "logged_in"
        }
    }
});

Где и как в моей пользовательской теме мне нужно разместить код для достижения этой цели?

Спасибо :slight_smile:

Скорее всего, вам стоит использовать onPageChange из нашего API плагинов.

В теме вы захотите добавить что-то вроде этого в javascripts/discourse/api-initializers/your-initializer.js

import { withPluginApi } from "discourse/lib/plugin-api";

export default {
  name: "custom-script-name",

  initialize() {
    withPluginApi("0.8.36", (api) => {
      api.onPageChange(() => {
        // скрипт, который вы хотите запустить при смене страницы, здесь
      });
    });
  },
};

Спасибо! Это помогло.

А вы случайно не знаете, как получить язык интерфейса из настроек пользователя?