C’est très utile concernant les thèmes vs les plugins, ainsi que pour l’exemple spécifique que j’ai mentionné. Merci.
Jusqu’à présent, ma démarche pour introduire des modifications consistait à trier les spécificités du code de Discourse (où cet objet est-il défini, quel élément contrôle ce modèle, où se trouve la logique qui gère cette action, etc.). Mais cela a été lourd et lent.
Je pense qu’une voie probablement plus efficace serait de me concentrer sur l’API. Ainsi, je n’aurais pas besoin de trier tous les détails du code mature de Discourse, et je pourrais me concentrer sur la création d’un thème plutôt que d’un plugin — ou peut-être simplement apporter des modifications via le tableau de bord « Personnalisation ».
Fondamentalement, comprendre comment fonctionne l’API semble beaucoup plus gérable que de démêler la base de code de Discourse.
Pour rester sur l’exemple que j’ai mentionné : si l’utilisateur est modérateur d’une catégorie, permettre à cet utilisateur d’épingler des sujets sur la page de la catégorie.
Pourrais-je le faire sans plugin ? Laissez-moi essayer de le schématiser :
1. L’utilisateur est-il modérateur d’une catégorie ?
Je ne vois actuellement rien dans l’API qui indiquerait si un utilisateur est modérateur d’une catégorie. Je m’attendrais à ce que cette information figure dans un appel GET pour récupérer une catégorie, mais je n’y vois pas un tel appel. Ou peut-être dans l’appel GET pour récupérer un utilisateur, mais là non plus, je ne vois pas de liste des catégories dont l’utilisateur est modérateur.
Pourrais-je ajouter ces éléments ?
Ou, alternativement, je pourrais créer un champ personnalisé sur l’utilisateur ou la catégorie pour identifier le statut de modérateur, puis effectuer un appel API vers ce champ personnalisé lors du chargement de la page de la catégorie.
2. Si l’utilisateur est modérateur, afficher le bouton d’épinglage.
Si je peux répondre à la question (1), alors je suppose que je peux simplement ajouter ce bouton avec du JavaScript et du CSS côté client, en l’affichant uniquement si l’utilisateur est modérateur.
3. L’utilisateur (qui est modérateur) clique sur le bouton, ce qui épinglé le sujet.
Dans l’API, les sujets semblent bien avoir un attribut « épinglé » (un booléen). Je suppose que cela correspond à leur statut épinglé dans leur catégorie, car il semble que chaque sujet n’appartienne qu’à une seule catégorie.
Donc, ici, lorsque le modérateur clique sur le bouton « Épingler », je pourrais probablement mettre à jour le statut « épinglé » du sujet à True. Si cela ne fonctionne pas, les champs personnalisés pourraient également être une solution ici (bien que je ne voie pas comment ajouter des champs personnalisés à un sujet).
Avec cela, ou quelque chose de similaire, il semble que je puisse accomplir cette tâche via l’API, alors que si je le faisais avec un plugin, cela nécessiterait beaucoup de temps à trier les fichiers de la base de code de Discourse.
Est-ce que cela vous semble correct ?