How do I register a public asset in a plugin?

AI-generated summary

Users are facing issues with registering public assets in Discourse plugins, specifically when trying to access images on a private members-only site. featheredtoast shared their problem with the Discord oauth plugin, and Nikolay also reported the same issue.

simon provided the solution by referencing an old Discourse plugin, trout_emoji, which demonstrates how to register public assets. The key is to add images to the public/images directory in the plugin, and they will be available on the server at /plugins/plugin_name/images/, where plugin_name is the name specified in the plugin.rb file metadata.

Nikolay confirmed that this solution worked, and the problem was due to a misunderstanding of the plugin name in the path.

Forgive me if this has been asked before, but I am unable to find a previous topic on this.

I’m wondering how to register an asset as public (such as an image) through a discourse plugin - it seems currently after registering, I get a 404 or 302 response when installing under a private member’s only site.

This is in reference to the Discord oauth plugin I built - I am unable to retrieve the image either directly, or through a register_asset call.

How would I go about serving static plugin assets in this case?

Bonjour, puis-je également obtenir des informations ? Car je rencontre le même problème.

Bien sûr, ce sujet a été supprimé. Il contenait un lien vers un ancien plugin Discourse qui présente un exemple d’inscription d’actifs publics dans un plugin : GitHub - eviltrout/trout_emoji: Adds an evil trout emoji to a discourse install · GitHub.

La dernière fois que je l’ai testé, ajouter des images à un plugin dans le répertoire public/images les rend disponibles sur le serveur dans /plugins/nom_du_plugin/images/.

Le nom de plugin que vous utilisez dans le chemin est le nom de plugin que vous attribuez dans les métadonnées en haut du fichier plugin.rb, par exemple /plugins/trout_emoji/images/trout-square.jpg.

Merci beaucoup. Cela fonctionne maintenant. Le problème venait du fait que je pensais que le nom du plugin dans le chemin était le nom du dossier :slight_smile: