Llamar función al cambiar de página

Me gustaría llamar a una función de JavaScript cada vez que el usuario cambie de página.
Entiendo JavaScript y Ruby on Rails, pero no estoy seguro de cuál es la mejor práctica en Discourse para lograrlo. Agradecería cualquier consejo.

P.D.: Estoy usando una versión de Discourse en Docker.

Dependiendo de lo que quieras hacer, esto podría variar enormemente, pero para llamar a una función o realizar alguna acción en cada cambio de página por parte del usuario, puedes utilizar la API de complementos.

Aquí puedes consultar una guía para desarrolladores sobre el uso de temas/componentes de Discourse (JavaScript personalizado, etc.).

Aquí puedes encontrar información sobre withPluginApi.

Este es un ejemplo sencillo en el que registro la URL actual, así como el título de la página.

Estoy haciendo esto en el archivo common/head_tag.html, que se puede editar en /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>

Gracias @jordan.vidrine por la respuesta. Voy a revisar estos recursos. Una pregunta más, quizás relacionada con la versión empaquetada en Docker. ¿Existe alguna mejor práctica para editar archivos dentro del contenedor? ¿Puedo simplemente “entrar” en el contenedor, modificar los archivos y reiniciarlo?

Para algunos casos, creo que eso debería funcionar. (No tengo mucha experiencia con Docker)

También puedes editar ciertos archivos css y html, así como las etiquetas <script> desde el panel de administración de Discourse al visitar tu sitio en /admin/customize/themes/9/common/head_tag/edit.