Masquer tous les sujets "à propos de la catégorie x"

Je suis conscient que tous ces sujets sont toujours visibles par défaut pour les administrateurs. Mais disons que je ne veux pas les voir sur mon site personnel que je construis sur Discourse, même en tant qu’administrateur.

Comment pourrais-je masquer tous ces sujets dans toutes les catégories ?

Vous pouvez les retirer de la liste, mais vous les verrez toujours car vous êtes un administrateur. :thinking: Cependant, vous pourriez masquer les sujets.

Peut-être est-ce possible avec CSS ?

Je ne suis pas sûr qu’ils aient une classe dédiée ?

Je pense que j’essaierais l’approche « tout les marquer et masquer le tag » car elle semble demander le minimum d’effort. (Mais les retirer de la liste pour le bénéfice de tous les autres)

Par curiosité, pourquoi voulez-vous les cacher de vous-même ?

1 « J'aime »

Par curiosité, pourquoi voulez-vous les cacher de vous-même ?

Honnêtement ? Je n’aime tout simplement pas les voir. Si je vais sur mon blog… je veux juste voir mon blog aussi :slight_smile:

J’ai trouvé une solution. Ce n’est évidemment pas une solution évolutive, et ce n’est peut-être même pas optimal techniquement (je ne sais pas comment cela serait géré sur des sites plus importants avec de nombreux chargements de pages, etc.), mais c’est une solution qui fonctionne pour moi car je n’ai qu’une seule catégorie pour mon blog :

ChatGPT me l’a donné et cela a fonctionné du premier coup. Il cible juste cet identifiant de sujet très spécifique et le masque :

<script>
  document.addEventListener("DOMContentLoaded", function() {
    var element = document.querySelector('[data-topic-id="10"]'); // remplacez 10 par votre ID de sujet
    if (element) {
      element.style.display = 'none';
    }
  });
</script>

Et voilà !

1 « J'aime »

Si vous êtes curieux de savoir ce qu’en pense l’entreprise (car je sais que j’ai posté/vous avez répondu à ce sujet il y a très longtemps), c’est juste une expérience administrative incohérente d’utiliser un sujet Discourse comme paramètre de catégorie, alors qu’aucun autre paramètre de catégorie n’est représenté comme un sujet Discourse. C’est très décousu (bien que toujours très intelligent !). Je vois également ces sujets “À propos” renommés, utilisés comme guides de démarrage (je le fais moi-même, bien que seulement parce que je suis obligé de le conserver), etc.

Je comprends pourquoi et la valeur initiale d’utiliser un sujet comme endroit existant pour héberger la description du sujet. Je vois également le potentiel dans cette même capacité, comme le texte du composant de thème discourse-category-sidebars hébergé par un sujet.

Mais d’un point de vue UX et administratif, je m’attendrais à ce que tous mes paramètres de catégorie soient simplement au même endroit. Discourse stocke déjà du texte comme paramètre dans la catégorie, avec markdown et tout, pour le modèle de catégorie. Ce serait formidable de voir la cohérence apportée à la catégorie de cette manière.

J’espère que cela vous donne un peu plus de perspective !


EDIT : Si je manque de valeur quelque part que je n’ai pas vue, indiquez-le-moi ! :rocket:

Aussi, EDIT :

Dommage. Il semble que le script que j’ai lié ci-dessus ne fonctionne que la première fois que la page web est chargée dans le navigateur. Si vous naviguez sur le site et revenez, ces éléments réapparaissent. Avec mes connaissances limitées (lisez : absolument nulles) en développement web, je suppose que c’est parce que DOMContentLoaded ne se déclenche pas à nouveau après le chargement du site.

La recherche continue…

Je pense que si vous cherchez à masquer un seul sujet, vous pouvez probablement le faire avec CSS. Mon CSS est médiocre, mais je vois l’identifiant data-topic-id là-dedans, donc il peut probablement être ciblé ?

Ah, il y a un piège ! Si vous le réutilisez, celui-ci n’apparaîtra pas dans certaines listes de sujets ou n’enverra pas de notifications lorsque les gens répondent, etc. Je pense que la meilleure chose à faire avec eux, tels quels, est de les laisser comme descriptions de catégorie et de les fermer (et de les retirer de la liste si vous ne vouliez pas qu’ils soient visibles par la plupart des gens). Hormis les ajustements de développement, évidemment, si vous pouvez vous le permettre. :slight_smile:

Le stockage de la description de la catégorie dans les sujets a fait l’objet d’une discussion interne, ainsi que la manière dont nous gérons les conditions d’utilisation et les directives, etc. Il n’y a pas de plans immédiats pour changer le format, mais je pense qu’il y a certainement une conversation à avoir à ce sujet.

Il y a un sujet Feature concernant le changement du défaut

2 « J'aime »

Ceci est une mise à jour qui fonctionne parfaitement pour mon cas d’utilisation.

Si vous souhaitez masquer un sujet particulier via CSS, au chargement de la page et par la suite, cela le fera. Ajoutez simplement vos identifiants de sujet à la liste des identifiants de sujet :

<script>
  document.addEventListener("DOMContentLoaded", function() {
    var topicIdsToHide = ["10", "20", "30"]; // Ajoutez vos identifiants de sujet ici

    function hideElementsByDataTopicIds() {
      topicIdsToHide.forEach(function(id) {
        var element = document.querySelector('[data-topic-id="' + id + '"]');
        if (element) {
          element.style.display = 'none';
        }
      });
    }

    // Exécute la fonction initialement
    hideElementsByDataTopicIds();

    // Crée un observateur de mutations pour surveiller les changements du DOM
    var observer = new MutationObserver(function(mutations) {
      mutations.forEach(function(mutation) {
        hideElementsByDataTopicIds();
      });
    });

    // Observe l'ensemble du document
    observer.observe(document.body, { childList: true, subtree: true });
  });
</script>