Comment ajouter des champs personnalisés aux modèles

C’est fantastique, @angus. Merci beaucoup.

Une vidéo est toujours appréciée — je suis tout à fait favorable à la simplicité, mais je ne pense pas qu’elle soit nécessaire pour obtenir la valeur clé de ces ressources que @angus a réunies. Ces ressources fournissent le code nécessaire pour atteindre l’objectif spécifique de chaque ressource (avoir un champ personnalisé de sujet fonctionnel ou un champ personnalisé de catégorie). Une vidéo consisterait probablement simplement à ce que @angus ou quelqu’un d’autre explique comment implémenter la ressource, mais cela est simple, et nous pouvons probablement simplement l’exposer ici.

Pour être clair, ces ressources ne sont pas des plugins que vous ajoutez simplement à votre site comme un plug-and-play pour personnaliser votre forum. Elles vous donnent plutôt efficacement la compréhension nécessaire pour coder vos propres champs personnalisés dans votre plugin.


Voici comment j’ai utilisé ces ressources :

Vous devrez ajouter le nom et le type de champ souhaité dans config/settings. Le code de ces ressources utilise des variables définies là-bas. Ainsi, vous n’avez en réalité pas besoin de beaucoup personnaliser le code pour qu’il fonctionne dans votre propre plugin après cela — les variables dans plugin.rb et ailleurs font référence à config/settings, et devraient ensuite fonctionner.

Après avoir mis à jour config/settings, vous pouvez simplement suivre le code et l’ajouter à votre plugin :

  • Commencez par le code dans plugin.rb et ajoutez-le au fichier plugin.rb de votre propre plugin afin de créer le champ personnalisé.

  • Ensuite, rendez-vous dans le initialiseur (dans assets/javascripts/discourse/[custom-field-initializer]) pour obtenir le code qui initialisera le champ personnalisé et vous permettra de l’enregistrer sur le serveur.

  • Créez ensuite le formulaire dans la couche de vue où l’utilisateur (ou votre application, si l’application ajoute le champ automatiquement) pourra entrer la valeur du champ personnalisé, ici (assets/discourse/connectors/[plugin-outlet-name]/[votre modèle spécial].hbs).

  • @angus a configuré ces éléments de sorte que vous deviez ajouter les formulaires pour les champs personnalisés dans un plugin outlet qui sera inséré dans le modèle de Discourse. Les paramètres pour ce formulaire se trouvent ici (assets/javascripts/discourse/lib/[nom-du-champ-personnalisé].js.es6), vous voudrez probablement aussi personnaliser cela pour que le formulaire fonctionne.

@angus, n’hésitez pas à corriger tout ce que j’ai dit ici.

Une fois que j’ai compris comment configurer le champ personnalisé en suivant les étapes ci-dessus, j’ai commencé à personnaliser un peu plus les choses (par exemple, en étant plus créatif sur le fonctionnement du formulaire), mais c’était un point de départ extrêmement utile qui m’a fait gagner des heures de travail.

Après avoir tout parcouru, j’ai eu quelques questions (comme je l’ai demandé plus tôt), mais obtenir des réponses dans Dev semble être la méthode la plus utile pour avancer à partir de là.

3 « J'aime »