Il y a tellement de sujets publiés dans ma communauté dans une catégorie particulière.
Parfois, cela agace les gens et ils veulent le supprimer de la page d’accueil.
Cependant, même ces utilisateurs ne sont pas complètement désintéressés par ces catégories, ni ne veulent les ignorer complètement.
J’ai donc proposé deux approches.
1 : Placer une case à cocher sur la page d’accueil pour sélectionner l’affichage ou non d’une catégorie particulière.
2 : Au lieu d’ignorer cette catégorie, afficher le nombre de nouveaux sujets dans la catégorie ignorée sur la page d’accueil. Les utilisateurs peuvent immédiatement voir la catégorie en cliquant sur l’onglet de cette catégorie particulière ajouté à la barre de navigation.
En fait, je pouvais afficher le nombre de nouveaux sujets dans 2, mais j’ai découvert juste après l’achèvement du composant que je ne pouvais pas obtenir le nombre de nouveaux sujets dans la catégorie ignorée… J’ai oublié de vérifier la catégorie ignorée…
Je considère donc l’approche 1 ensuite, mais je ne sais pas comment fonctionne la requête de la page d’accueil ni comment masquer certaines catégories…
Ou même une solution pour l’approche 2 (comment obtenir le nombre de nouveaux sujets dans la catégorie ignorée) serait la bienvenue.
Le CSS était un point aveugle, mais j’ai essayé quelques choses et cela ne semble pas très bien fonctionner.
Je ne suis pas un locuteur natif de l’anglais, donc je suppose que je ne l’ai pas assez bien expliqué.
Dans le 1, la notification doit être définie en dessous de Normal et certaines catégories doivent être masquées.
En CSS, je peux obtenir la classe de catégorie et la masquer, mais cela semble également effacer Watching et Tracking… J’essaierai de trouver un moyen de donner une classe en fonction des paramètres de notification de chaque sujet.
De plus, j’ai fait quelques recherches et il semble que la possibilité de supprimer des catégories du haut était une fonctionnalité très débattue il y a environ 2 ans et a été supprimée et remplacée par le silence.
Je pense que ceux qui étaient contre son remplacement complet par le silence avaient raison. Le silence est une fonctionnalité intéressante. Mais l’écart entre normal et silence est trop grand et le silence laisse la catégorie loin derrière.
Quelque chose entre les deux aurait été bien pour avoir un autre réglage de notification.
Quoi qu’il en soit, il semble que par défaut, l’affichage de tous les paramètres de notification soit supprimé.
Ceci est toujours fonctionnel (bien qu’avec le recul, le CSS ne soit pas mal non plus), mais je vais essayer de le perfectionner et de voir s’il est possible de masquer uniquement les paramètres de notification normaux et de mise en sourdine.
Puisqu’il s’agit d’un plugin, il semble y avoir une marge d’amélioration, j’ai donc retrouvé un peu de motivation. Merci beaucoup.
Une autre idée : limiter cette catégorie à un groupe particulier uniquement et donner aux utilisateurs la possibilité de la rejoindre lorsqu’ils en ont besoin.
Ou qu’ils y soient rejoints par défaut et qu’ils arrêtent leur participation au groupe lorsqu’ils ne veulent plus le voir.
J’ai un peu examiné le plugin et cela ne semble pas facile… J’ai regardé à l’intérieur de result = Topic::ActiveRecord et il ne semble pas contenir de données relatives aux notifications.
De plus, je me demande s’il est possible d’obtenir ici les informations des sujets individuels et d’obtenir le notification_level.
J’ai créé des plugins qui impliquent également du Ruby, mais je me suis principalement appuyé sur Javascript, donc je ne connais pas grand-chose au Ruby.
Peut-être… J’aimerais parcourir le contenu de “result” pour obtenir des informations détaillées sur chaque sujet, et enregistrer les IDs des sujets dont le notification_level est “Tracking” ou “Watching” et les stocker dans la liste, et ajouter à la clause where “OR j’imagine que cela fonctionnerait bien si vous utilisez `topics.topic_id IN (#{topic_ids.join(‘,’)})”. Je sais que ce n’est pas du code très élégant, et je ne suis pas familier avec Ruby, donc je ne suis pas sûr que cela fonctionnerait…
Je vais chercher un moyen d’appeler Topic par ID depuis Ruby.
Je ne comprends pas tout correctement, mais d’une manière ou d’une autre, cela a fonctionné.
Au cas où quelqu’un d’autre voudrait faire la même chose, je le laisse ici.
Ligne 17 de plugin.rb du plugin que JammyDodger m’a appris.
result.where("topics.category_id NOT IN (#{category_ids.join(\",\")})")
à
result.where("topics.category_id NOT IN (#{category_ids.join(\",\")}) OR tu.notification_level IN (2,3)")
Les sujets “Tracking” et “Watching” restent sur la page principale, mais le sujet “Normal” est caché de la page principale.
Cela a pris du temps car je ne comprenais pas bien ActiveRecord, mais si j’avais communiqué le problème correctement, cela aurait peut-être été un problème facile pour vous.
Je ne suis pas sûr à 100% de suivre, mais si vous ‘mettez en sourdine par défaut’ une catégorie à partir du paramètre d’administration catégories par défaut mises en sourdine, cela semble déjà faire quelque chose de similaire ? Les sujets n’apparaîtront pas dans la liste “Le plus récent”, mais seront tous visibles si vous allez sur la page de la catégorie. Et si un utilisateur interagit avec un sujet pour qu’il devienne “suivi” ou “observé”, alors ceux-ci apparaissent dans ses listes de sujets.
J’ai créé un composant pour obtenir ce nombre de sujets, mais j’ai réalisé que la mise en sourdine ne recevait pas le compte des Nouveaux Sujets car le sujet mis en sourdine n’est pas compté dans les Nouveaux Sujets.
J’ai créé un composant pour obtenir ce nombre de sujets, mais j’ai remarqué que la mise en sourdine ne recevait pas les Nouveaux Sujets, je n’ai donc pas pu obtenir le nombre de nouveaux sujets.
C’est pourquoi je cherchais un moyen de l’empêcher de s’afficher sur la page d’accueil avec le réglage de notification Normal.
C’est peut-être une situation particulière. Pour une catégorie donnée, il y a un nombre indésirable de sujets non lus sur la page d’accueil, tandis que le réglage par défaut sur Mute rend difficile la détection de nouveaux sujets et éloigne excessivement les utilisateurs de la catégorie. Nous ne voulions pas faire cela car un grand nombre de sujets sur la page d’accueil signifie une catégorie très dynamique.
C’est peut-être un problème qui aurait dû être résolu par l’éducation des utilisateurs, mais nous voulions faire ce que nous pouvions quand même, et nous sommes heureux d’avoir réussi à répondre aux exigences.