| Résumé | Ajouter un bouton ou du texte n’importe où | |
| Dépôt | https://github.com/literatecomputing/discourse-custom-components | |
| Guide d’installation | Comment installer un thème ou un composant de thème | |
| Nouveau dans les thèmes Discourse ? | Guide du débutant pour utiliser les thèmes Discourse |
Installer ce composant de thème
Ajoute un bouton de lien ou du texte arbitraire à n’importe quelle sortie de plugin. (Ignorez les filigranes dans les images–j’ai pris ces captures d’écran sur un site de staging/test.)
Pour voir où se trouvent les sorties de plugin, utilisez Introducing Discourse developer toolbar pour les trouver. Si vous ne savez pas ce qu’est une sortie de plugin, vous pouvez consulter Using Plugin Outlet Connectors from a Theme or Plugin, mais ce composant vous permet, avec quelques restrictions, d’insérer du texte dans n’importe quelle sortie de plugin sans faire de programmation ou sans vraiment comprendre ce qu’est une sortie de plugin.
J’ai commencé à développer ce plugin pour quelqu’un qui voulait afficher un bouton « cliquez sur ce bouton pour vous abonner afin de pouvoir envoyer des MP » sur les profils d’utilisateurs et les cartes d’utilisateur. Il voulait que le bouton s’affiche si l’utilisateur ne pouvait pas envoyer de MP. Comme je ne suis pas toujours aussi intelligent que je le pense, j’ai écrit le composant en utilisant des groupes pour déterminer si le bouton était affiché. Un problème avec cette approche était que les membres du personnel n’étaient pas dans le groupe d’abonnés, ils voyaient donc le bouton « vous devez vous abonner » même s’ils pouvaient envoyer des MP. De plus, le groupe était masqué, il était donc impossible de l’utiliser dans un composant de thème de toute façon. J’ai réécrit ce composant de thème pour utiliser currentUser.can_send_private_messages afin de déterminer s’il fallait afficher le bouton.
À qui s’adresse ceci ?
Si vous souhaitez placer un bouton avec un lien dedans, ou du texte arbitraire affiché ou masqué pour certains groupes, cela vous permettra de les insérer à n’importe quelle sortie de plugin. Vous voulez ajouter un lien « Vous devez vous abonner » entre chaque message, sauf pour ceux qui ne sont pas membres ? Ceci le fera. Vous voulez coller du HTML arbitraire à une sortie de plugin, juste pour voir à quoi cela ressemblera ? Ceci le fera.
Comment cela aide les développeurs
Ce thème contient quelques exemples simples sur la façon de :
- utiliser l’objet Objects type for theme setting
- utiliser
api.renderInOutlet(comme décrit ici pour coller un composant Glimmer à une sortie contrôlée par un paramètre plutôt que de créer un fichier dans le répertoireconnectors - Écrire un composant Glimmer simple qui accède à
currentUser - Envelopper un composant dans un autre modèle (en ligne) pour pouvoir lui transmettre des données
- Afficher du HTML arbitraire à partir d’un paramètre de thème, libre des contraintes de Markdown – Oui, peut-être
mais si vous essayez de le faire à l’intérieur d’un <template> à l’intérieur d’un fichier .gjs, cela fonctionne un peu différemment (comme {{htmlSafe component.text}})



