Chiama la funzione al cambio di pagina

Vorrei chiamare una funzione JavaScript ad ogni cambio di pagina da parte dell’utente.
Conosco JavaScript e Ruby on Rails, ma non sono sicuro di quale sia la migliore pratica in Discourse per farlo. Sarei grato per qualsiasi consiglio.

P.S. Sto usando una versione di Discourse containerizzata con Docker.

A seconda di ciò che vuoi fare, questo può variare notevolmente, ma per chiamare una funzione o eseguire un’azione ad ogni cambio di pagina da parte dell’utente, puoi utilizzare la plugin API.

Qui puoi consultare una guida per sviluppatori all’uso dei temi/componenti di Discourse (JS personalizzato, ecc.).

Qui puoi trovare le informazioni su withPluginApi.

Questo è un semplice esempio in cui registro l’URL corrente e il titolo della pagina.

Sto facendo questo nel file common/head_tag.html, che può essere modificato in /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>

Grazie @jordan.vidrine per la risposta. Controllerò queste risorse. Un’altra domanda, forse più legata alla versione Dockerizzata: esiste una best practice per modificare i file all’interno del contenitore? Posso semplicemente “entrare” nel contenitore, modificare i file e riavviarlo?

Per alcune istanze, credo che dovrebbe funzionare. (Non ho molta esperienza con Docker)

Puoi anche modificare certi file css e html, nonché i tag <script> dal pannello di amministrazione di Discourse quando visiti il tuo sito in /admin/customize/themes/9/common/head_tag/edit.