Appeler une fonction lors du changement de page

J’aimerais appeler une fonction JavaScript à chaque changement de page de la part de l’utilisateur.
Je comprends le code JS et Ruby on Rails, mais je ne suis pas sûr de quelle est la meilleure pratique dans Discourse pour y parvenir. Je serais reconnaissant pour tous conseils.

P.S. : J’utilise une version de Discourse conteneurisée avec Docker.

1 « J'aime »

Selon ce que vous souhaitez faire, cela peut varier considérablement, mais pour appeler une fonction ou effectuer une action à chaque changement de page de l’utilisateur, vous pouvez utiliser l’API des plugins.

Vous pouvez consulter le guide pour les développeurs sur la personnalisation des thèmes et des composants Discourse (JavaScript personnalisé, etc.).

Vous trouverez également des informations sur withPluginApi.

Voici un exemple simple où je consigne l’URL actuelle ainsi que le titre de la page.

Je le fais dans le fichier common/head_tag.html, qui peut être édité à l’adresse /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>
6 « J'aime »

Merci @jordan.vidrine pour ta réponse. Je vais consulter ces ressources. Une autre question, peut-être plus liée à la version Dockerisée : existe-t-il une meilleure pratique pour modifier des fichiers à l’intérieur du conteneur ? Puis-je simplement « entrer » dans le conteneur, modifier les fichiers et le redémarrer ?

1 « J'aime »

Pour certaines instances, je pense que cela devrait fonctionner. (Je n’ai pas beaucoup d’expérience avec Docker)

Vous pouvez également modifier certains fichiers css et html, ainsi que les balises <script>, depuis le panneau d’administration de Discourse en visitant votre site à l’adresse /admin/customize/themes/9/common/head_tag/edit.

1 « J'aime »