J’utilise Banner Themes (https://meta.discourse.org/t/banner-themes-and-instructions-for-customizing-them/82368) pour afficher du contenu HTML aux utilisateurs anonymes. Il s’agit principalement de les encourager à créer un compte.
Je tente d’ajouter un bouton « S’inscrire » au milieu de mon contenu. En général, il est assez simple de créer un bouton et de rediriger vers .xyz Domain Names | Join Generation XYZ au clic, en traitant cela comme une redirection web classique. [Que ce soit via JS, un simple post de formulaire, une redirection href, etc…]
J’ai cherché à savoir s’il était possible d’utiliser une méthode plus « native de Discourse » pour réaliser cette action. J’ai suivi de près le Guide du développeur pour les thèmes Discourse. Entre les widgets, les contrôleurs et les composants, une question s’est posée :
Quelle est la méthode la plus simple, en utilisant JavaScript (dans un script de type “text/discourse-plugin”), pour « afficher la fenêtre modale d’inscription » ? Pour être très clair, je cherche à exécuter cela en dehors d’un script Handlebars comme ceci :
{{d-button action=(route-action “showCreateAccount”) class=“btn-primary sign-up-button” label=“sign_up”}}
Au final, quelque chose comme ça… Je cherche à comprendre ce qu’il faut remplacer par le texte en gras :
<script type="text/discourse-plugin"version=“0.8.18”>
document.getElementById(“showCreate”).onclick = function() {
{{d-button action=(route-action “showCreateAccount”) class=“btn-primary sign-up-button” label=“sign_up”}}
}
</script>
Tout ce que j’ai essayé génère différentes erreurs, mais principalement parce que l’« action » n’est pas comprise. J’ai cherché sur Meta et, bien qu’il y ait de nombreux exemples sur la création d’un nouveau widget ou sur le placement ailleurs, je n’ai pas trouvé de moyen de le faire nativement. Toute aide serait grandement appréciée.
(P.S. Je ne dis pas que c’est la meilleure ou la seule façon de faire fonctionner cela, mais cela m’aiderait grandement à comprendre comment l’ensemble de l’application est structuré)
Merci !