Вызов функции при смене страницы

Я хотел бы вызывать JavaScript-функцию при каждом изменении страницы пользователем.

Я разбираюсь в JS и Ruby on Rails, но не уверен, какова лучшая практика в Discourse для этого. Буду благодарен за любые советы.

P.S. Я использую Docker-версию Discourse.

В зависимости от того, что вы хотите сделать, варианты могут сильно различаться, но для вызова функции или выполнения действий при каждом изменении страницы пользователем можно использовать API плагинов.

Здесь вы можете ознакомиться с руководством для разработчиков по использованию тем и компонентов Discourse (пользовательский JS и т. д.).

Здесь вы найдете информацию о withPluginApi.

Ниже приведен простой пример, где я вывожу в лог текущий URL, а также заголовок страницы.

Я делаю это в файле common/head_tag.html, который можно отредактировать по адресу /admin/customize/themes/9/common/head_tag/edit.

<script type="text/discourse-plugin" version="0.8">
    api.onPageChange((url, title) => {
        console.log(url, title);
    });
</script>

Спасибо @jordan.vidrine за ответ. Я изучу эти ресурсы. Ещё один вопрос, возможно, более относящийся к версии в Docker. Есть ли какие-либо лучшие практики для редактирования файлов внутри контейнера? Могу ли я просто «войти» в контейнер, изменить файлы и перезапустить его?

Для некоторых случаев, я считаю, это должно сработать. (У меня не так много опыта работы с Docker)

Вы также можете редактировать определенные файлы css и html, а также теги <script> через панель администратора Discourse, посетив ваш сайт по адресу /admin/customize/themes/9/common/head_tag/edit.