Créer des sous-sujets ?

J’aimerais rendre certains sujets des sous-sujets d’autres.

Par exemple, si j’ai le « Sujet A », je placerai un bouton « Créer un sous-sujet » sur la page du Sujet A. Cela permettra à l’utilisateur de créer un nouveau sujet, « Sujet B », qui sera un enfant du Sujet A.

Du point de vue de l’expérience utilisateur, cela signifie :

Je pourrais également ajouter un bouton sur la page du Sujet A pour « Voir tous les sous-sujets du Sujet A », ce qui mènerait à une liste des sous-sujets du Sujet A, comme le Sujet B et tout autre sujet qui en est un enfant.

Quelle est la meilleure façon de procéder ? (Je suppose que je devrai le faire dans un plugin, ce qui ne me pose pas de problème.)

Notez que je ne cherche qu’un seul niveau de sous-sujet, pas plusieurs.

Voici quelques détails sur les possibilités que j’envisage :

Catégories (bien que ce ne soit probablement pas la meilleure approche)

Les catégories offriraient une fonctionnalité similaire à celle que j’ai en tête, mais cela pourrait devenir trop lourd dès qu’il y aura un nombre raisonnable de sujets avec des sous-sujets (il semble excessif d’avoir essentiellement une nouvelle catégorie pour chaque sujet parent).

ou

Étiquettes

La meilleure idée qui me vient actuellement est d’utiliser les étiquettes. Ainsi, lorsque vous cliquez sur « Créer un sous-sujet » sur le Sujet A, un nouveau sujet s’ouvre, et j’ajoute programmatiquement une étiquette cachée, comme « Sujet-A », qui fait référence au Sujet A. Ensuite, lorsque vous cliquez sur « Voir tous les sous-sujets » du Sujet A, une recherche est effectuée pour l’étiquette « Sujet-A ».

Cela semble assez propre, à l’exception du fait qu’il y aura beaucoup d’étiquettes (essentiellement une étiquette par sujet principal, ce qui pourrait devenir très nombreux).

ou

Champs personnalisés pour les sujets

Une autre possibilité que j’ai envisagée est de créer un champ personnalisé pour les sujets, qui serait un tableau contenant les identifiants des sous-sujets de ce sujet. Cela pourrait aussi fonctionner, mais serait probablement légèrement plus complexe à coder.

Par exemple, je devrais mettre à jour le champ personnalisé du sujet principal uniquement après la création d’un sous-sujet ; et je devrais créer un nouveau type de recherche – rechercher tous les sujets contenus dans le tableau du champ personnalisé du sujet principal – au lieu d’utiliser simplement la fonctionnalité de recherche par étiquette déjà intégrée.

Y a-t-il une autre solution que je n’aurais pas envisagée ?

Je vois une autre solution qui pourrait fonctionner, sans travail de code lourd.

Avec le plugin assistant personnalisé, vous pouvez effectuer plusieurs actions dans une seule procédure. Dans ce cas, vous demanderiez à l’utilisateur de rédiger son sous-sujet via un assistant qui :

  • Crée un nouveau sujet pour le sous-sujet
  • Crée une réponse dans le sujet principal avec un lien vers le sous-sujet.

Avec un peu de CSS personnalisé pour tous les messages principaux (vous pouvez ajouter une classe CSS pour les sélectionner via une catégorie ou un tag), vous pouvez modifier l’apparence des réponses pour correspondre à ce que vous avez en tête. Vous pourriez également trouver un moyen, via l’assistant, d’ajouter un paramètre aux réponses qui vous permettra de sélectionner uniquement les réponses automatiques.

Si vous n’aimez pas la solution des réponses, je pense que l’assistant personnalisé pourrait aussi ajouter un tag sur le sous-sujet créé.

Je n’y avais pas pensé. Merci. L’élément clé qui me manque dans le sous-thème est un lien vers le thème principal, comme une balise (« Topic-A ») associée au sous-thème. Pensez-vous que l’assistant, lors de la soumission, enverrait un appel API pour créer la balise et la lier au sous-thème ? (Je ne connais pas très bien le plugin assistant.) Je pense aussi qu’une limite du plugin assistant est qu’il ouvre sa propre page, qui ne possède pas l’en-tête normal de mon site. Autrement dit, je crois que toute page contenant l’assistant aura une apparence très différente du reste de l’application, ce qui pourrait être déroutant pour les utilisateurs dans ce cas.

Je pensais justement que j’aimerais aussi avoir un niveau de sous-sujets. Cela permettrait d’obtenir un niveau d’imbrication/hiérarchie, tout en gardant l’interface épurée pour qu’il n’y ait pas une multitude de conversations imbriquées.

Exemples de la façon dont je pourrais l’utiliser :

  • Créer un sujet pour un épisode/une publication/un article et demander aux gens de créer des sous-sujets basés sur leurs réactions.

  • Créer un sujet de question, puis demander aux gens de créer des sous-sujets avec leurs propres réponses (bonus pour l’option de limiter un sous-sujet par personne).

Avez-vous progressé dans la création d’un plugin ou avez-vous trouvé comment faire cela avec les fonctionnalités actuelles de Discourse ?

La seule façon que j’ai vue de le faire était d’utiliser des champs personnalisés de sujet. Par exemple, le sous-sujet pourrait avoir un champ personnalisé reliant au sujet principal. Ensuite, vous pouvez rechercher tous les sujets ayant ce sujet principal comme valeur de champ personnalisé. Je n’ai pas encore de plugin entièrement implémenté, mais j’ai réussi à le faire fonctionner en gros en développement en utilisant du code comme celui que j’ai mentionné ici : Retrieve Topics based on custom field? - #12 by JQ331

Ah oui, j’imagine que si l’on créait un champ personnalisé de sujet de type « sujet-parent » ou quelque chose de similaire, il y aurait de nombreuses façons d’en tirer parti. Je vais examiner de plus près le lien que vous avez partagé, et j’espère apprendre un peu de Ruby en cours de route. Merci !