Créer un plugin pour Discourse peut être vraiment simple, une fois que vous avez appris quelques particularités. L’objectif de ce message est de créer un plugin squelette et de vous initier aux bases.
Votre environnement de développement
Assurez-vous d’avoir un environnement de développement Discourse en cours d’exécution sur votre ordinateur. Je vous recommande d’utiliser le guide d’installation approprié et de revenir lorsque vous avez terminé.
plugin.rb
Utilisez GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins · GitHub pour créer un squelette de plugin Discourse complet dans votre répertoire de plugins
Le squelette est maintenant inclus dans le noyau de Discourse,
rake plugin:create[nom-du-plugin]créera un plugin à l’aide du squelette
Lorsque Discourse démarre, il recherche dans le répertoire plugins les sous-répertoires contenant un fichier plugin.rb. Le fichier plugin.rb a deux objectifs : il est le manifeste de votre plugin avec les informations requises sur votre plugin, y compris : son nom, les informations de contact et une description. Le deuxième objectif est d’initialiser tout code ruby nécessaire au fonctionnement de votre plugin.
Dans notre cas, nous n’ajouterons aucun code ruby, mais nous avons toujours besoin du fichier plugin.rb. Créons le répertoire basic-plugin avec le fichier plugin.rb à l’intérieur, avec le contenu suivant :
basic-plugin/plugin.rb
# name: basic-plugin
# about: Un plugin super simple pour démontrer le fonctionnement des plugins
# version: 0.0.1
# authors: Développeur de Plugin Incroyable
# url: https://github.com/votre_nom_utilisateur/basic-plugin
Une fois ce fichier créé, vous devriez redémarrer votre serveur local et le plugin devrait être chargé.
Une astuce importante !
Si vous êtes habitué au développement Rails classique, vous remarquerez peut-être que les plugins ne sont pas aussi agréables en ce qui concerne le rechargement. En général, lorsque vous apportez des modifications à votre plugin, vous devriez appuyer sur Ctrl+c pour arrêter le serveur, puis le relancer à l’aide de bin/dev.
Mes modifications n’ont pas été prises en compte ! 
Parfois, le cache n’est pas entièrement vidé, en particulier lorsque vous créez de nouveaux fichiers ou supprimez des fichiers anciens. Pour contourner ce problème, supprimez votre dossier tmp et redémarrez Rails. Sur un Mac, vous pouvez le faire en une seule commande : rm -rf tmp; bin/dev.
Vérifier que votre plugin a été chargé
Une fois que vous avez redémarré votre serveur local, visitez l’URL /admin/plugins (assurez-vous d’être connecté en tant que compte administrateur d’abord, car seuls les administrateurs peuvent voir le registre des plugins).
Si tout a fonctionné, vous devriez voir votre plugin dans la liste :
Félicitations, vous venez de créer votre premier plugin !
Ajoutons du Javascript
Pour l’instant, votre plugin ne fait rien. Ajoutons un fichier Javascript qui affichera une boîte de dialogue d’alerte lorsque Discourse se charge. Cela sera super ennuyeux pour tout utilisateur et n’est pas recommandé en tant que plugin réel, mais montrera comment insérer du Javascript dans notre application en cours d’exécution.
Créez le fichier suivant :
plugins/basic-plugin/assets/javascripts/discourse/initializers/alert.js
export default {
name: "alert",
initialize() {
alert("les boîtes d'alerte sont ennuyeuses !");
},
};
Maintenant, si vous redémarrez votre serveur local, vous devriez voir apparaître “les boîtes d’alerte sont ennuyeuses !” à l’écran. (Si ce n’est pas le cas, consultez le titre “Mes modifications n’ont pas été prises en compte” ci-dessus).
Parcourons comment cela a fonctionné :
-
Les fichiers Javascript placés dans
assets/javascripts/discourse/initializerssont exécutés automatiquement lorsque l’application Discourse se charge. -
Ce fichier particulier
exporte un objet, qui possède unnameet une fonctioninitialize. -
Le
namedoit être unique, donc je l’ai simplement appeléalert. -
La fonction
initialize()est appelée lorsque l’application se charge. Dans notre cas, elle se contente d’exécuter notre codealert().
Vous êtes maintenant un développeur de plugins Discourse officiel !
Plus dans la série
Partie 1 : Ce sujet
Partie 2 : Prises de plugins
Partie 3 : Paramètres du site
Partie 4 : Configuration git
Partie 5 : Interfaces administrateur
Partie 6 : Tests d’acceptation
Partie 7 : Publiez votre plugin
Ce document est sous contrôle de version - suggérez des modifications sur github.

