Composants personnalisés -- ajouter un bouton ou du texte à toute sortie de plugin

| | | |\n|— | — | —|\n|:information_source: | Résumé | Ajouter un bouton ou du texte n’importe où|\n|:hammer_and_wrench: | Dépôt | https://github.com/literatecomputing/discourse-custom-components|\n|:question: | Guide d’installation | Comment installer un thème ou un composant de thème|\n|:open_book: | Nouveau aux thèmes Discourse ? | Guide du débutant pour l’utilisation des thèmes Discourse|\n\n\u003c!-- Remplissez "repoName" et "repoURL" pour le bouton d’installation automatique –\u003e\n\n[wrap=theme-install-button repoName="Custom Components" repoUrl="https://github.com/literatecomputing/discourse-custom-components\"]\nInstaller ce composant de thème\n[/wrap]\n\n\u003c!-- Décrivez ce thème/composant en une ou deux phrases –\u003e\n\nAjoutez un bouton de lien ou du texte arbitraire à n’importe quel point de sortie de plugin. (Ignorez les filigranes sur les images - j’ai pris ces captures d’écran sur un site de staging/test.)\n\n\u003c!-- Ajoutez des captures d’écran (si applicable) –\u003e\n\n

\n\n\n\n\n\n\u003c!-- Ajoutez plus de détails et expliquez les paramètres (si applicable) –\u003e\n\nJ’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’utilisateurs. Ils voulaient que le bouton s’affiche si l’utilisateur ne pouvait pas envoyer de MP. Comme je ne suis pas toujours aussi intelligent que je voudrais le penser, 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, donc ils recevraient le bouton "vous devez vous abonner" même s’ils pouvaient envoyer des MP. De plus, le groupe était caché, 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.\n\n### À qui s’adresse ceci ?\n\nSi vous voulez mettre un bouton avec un lien dedans, ou du texte arbitraire qui est affiché ou caché pour certains groupes, cela vous permettra de les insérer à n’importe quel point de sortie de plugin. Vous voulez ajouter un bouton de lien "Vous devriez vous abonner" entre chaque message sauf pour ceux qui ne sont pas membres ? Cela le fera. Vous voulez coller du HTML arbitraire à un point de sortie de plugin, juste pour voir à quoi il ressemblera ? Cela le fera.\n\n### Comment cela aide les développeurs\n\nCe thème contient quelques exemples simples sur la façon de :\n- utiliser les https://meta.discourse.org/t/objects-type-for-theme-setting/305009\n- utiliser api.renderInOutlet (comme décrit ici pour coller un composant Glimmer à un point de sortie contrôlé par un paramètre plutôt que de créer un fichier dans le répertoire connectors\n- Écrire un simple composant Glimmer qui accède à currentUser\n- Encapsuler un composant dans un autre modèle (en ligne) pour pouvoir lui passer des données\n- Afficher du HTML arbitraire à partir d’un paramètre de thème sans les contraintes de Markdown–Bien sûr, peut-être \n[quote="Discourse, post:1, topic:82557"]\nVous pouvez utiliser l’aide html-safe d’Ember ici et elle rendra le HTML au lieu du texte.\n[/quote]\n\nmais si vous essayez de le faire à l’intérieur d’un \u003ctemplate\u003e à l’intérieur d’un fichier .gjs, cela fonctionne un peu différemment (comme {{htmlSafe component.text}})

15 « J'aime »

L’espace rend le texte non gras.


Excellent composant !

5 « J'aime »

Serait-il possible d’ajouter des espaces réservés aux URL des boutons, par exemple pour que l’URL contienne l’ID du sujet dans lequel l’utilisateur se trouve ?

Je ne suis pas tout à fait sûr. Si vous avez un budget, je regarderai.

Que ferait votre bouton s’il avait l’ID du sujet ?

Si vous trouvez une solution et souhaitez soumettre une PR, je l’accepterai probablement.

Je suis à peu près sûr que la réponse est non, mais que vous pourriez utiliser la solution de contournement décrite ici

2 « J'aime »

Salut @pfaffman

Nous voulons ajouter un ensemble de boutons à chaque sujet pour les membres de notre groupe d’utilisateurs de compte professionnel.
Le bouton déclencherait alors la création d’un nouveau MP qui inclurait l’URL actuelle sur laquelle l’utilisateur se trouve.

De cette façon, nos clients professionnels peuvent nous envoyer des demandes pour épingler, mettre en évidence ou « parrainer » des sujets spécifiques.

1 « J'aime »

Comme vous le savez, vous pouvez créer une URL qui ouvrira un nouveau compositeur de sujet. Vous pourriez faire en sorte que ce soit le lien ajouté par le composant de thème.

Je ne pense pas qu’il soit possible de le faire sans ajouter de code au composant de thème (mais peut-être que si ?). Peut-être que quelqu’un a une idée à ce sujet et proposera cette solution ici (ou sur l’autre sujet). Sinon, vous pouvez me contacter ou poster dans Marketplace avec la description de ce dont vous avez besoin et un budget.

3 « J'aime »