Cependant, j’ai du mal à créer plusieurs champs personnalisés. Quelqu’un a-t-il un exemple de code fonctionnel qu’il serait prêt à me vendre ou à partager ? Je peux le modifier pour répondre à mes besoins, mais j’ai juste besoin d’un peu d’aide pour commencer. Les 2 nouveaux champs dont j’aurais besoin seraient le prix (chaîne de caractères) et l’url (chaîne de caractères). J’aimerais aussi ajouter un champ de téléchargement d’image au sujet, mais je n’ai encore rien vu de tel.
Je serais heureux de vous aider. J’ai récemment créé un plugin où j’ai utilisé le champ personnalisé de sujet (Discourse Chain Topics Plugin).
Dans mon plugin, j’ai créé deux champs supplémentaires pour chaque sujet de type entier. De même, vous pouvez ajouter autant de champs que vous le souhaitez. Au final, les champs personnalisés de sujet/utilisateur sont un objet JSON où chaque champ que vous ajoutez sera alors une paire clé/valeur dans l’objet JSON. où la clé est le nom du champ et la valeur est la valeur.
L’exemple que vous avez donné ci-dessus (qui m’a également aidé) est construit de telle sorte que vous ajoutez un champ supplémentaire dans le panneau d’administration, où vous choisissez son type et son nom. Cependant, vous n’êtes pas obligé de lier les champs supplémentaires au panneau d’administration. De même, vous pourriez ajouter autant de champs que vous le souhaitez (pas sûr de l’impact sur les performances).
Enfin, n’hésitez pas à me contacter/m’envoyer un message pour toute aide dont vous pourriez avoir besoin. Vous pouvez également trouver mes coordonnées sur https://ghassan.blog
Je vous souhaite bonne chance.
Salut, j’avais le même problème… maintenant j’ai trouvé comment le faire avec plusieurs champs personnalisés !
Au-delà de la configuration du plugin.rb, vous devrez également avoir des fichiers individuels (initialiseur js et modèles .hbs et .hbr) pour chaque champ !
Le plugin discourse-topic-custom-fields a un dossier appelé
dans ce dossier, vous avez un fichier appelé : topic-custom-field-initializer.js.es6
pour un seul champ, vous pouvez simplement modifier ce fichier, mais pour plusieurs champs, vous devriez avoir d’autres fichiers comme celui-ci,
topic-custom-field-url-initializer.js.es6 et topic-custom-field-price-initializer.js.es6
à l’intérieur de chaque fichier, vous aurez 3 lignes avec une variable api appelant une méthode registerConnectorClass, vous devez modifier le deuxième paramètre et ajouter un suffixe pour avoir un nom exclusif pour chaque classe de champ sur chacune des 3 lignes
n’oubliez pas de changer le nom des exports dans chaque fichier (juste après le “exports default {…}”).
également, pour les fichiers hbs et hbr, vous devrez créer des fichiers séparés pour chaque champ également, il vous suffit de copier et coller les mêmes fichiers et d’ajouter un suffixe pour chaque nom de fichier, par exemple :