Nombre total de sujets / Sujets par mois sur la page de catégorie

La réponse courte est que vous, en tant qu’administrateur, avez une liste de catégories différente. En tant qu’administrateur, vous avez accès à des catégories privées. Je dis administrateur ici pour simplifier, mais cela s’applique également aux utilisateurs réguliers qui ont accès à des catégories privées. Ainsi, le nombre total de catégories sur votre liste est plus élevé. Notez que je ne parle que des catégories, pas des sous-catégories. Vous pouvez ignorer les sous-catégories pour l’instant.

Alors, comment cela se rapporte-t-il au fait que Discourse vous affiche 2 / semaine ou 17 / mois ou 4,4k ?

Il est conçu pour être une indication de l’activité et, pour le rendre plus pertinent, il prend en compte le nombre total de catégories auxquelles vous avez accès.

Alors, comment fonctionne toute cette magie ? Commençons par quelques informations de base que Discourse stocke pour chaque catégorie. Chaque catégorie a ces quatre propriétés :

topics_day: 12
topics_month: 95
topics_week: 53
topics_year: 874
topics_all_time: 13982

Chacune représente le nombre de nouveaux sujets créés dans la catégorie ou dans l’une de ses sous-catégories dans ce laps de temps. Ignorons les périodes de jour et d’année car elles sont sans importance ici.

Regardons un peu le code :

et concentrons-nous spécifiquement sur cette partie :

Que se passe-t-il ici ? Eh bien, nous commençons avec all comme période par défaut. Ensuite, nous voyons minCategories.

minCategories est ici le facteur décisif pour ce que j’ai décrit ci-dessus. C’est une sorte de nombre magique. En français, tout ce qu’il fait, c’est qu’il prend le nombre de catégories de premier niveau qui vous sont accessibles et le multiplie par 0,66.

Donc, disons que vous avez 5 catégories. Nous multiplions cela par 0,66 et nous obtenons 7,92.

Ensuite, Discourse parcourt chaque catégorie et vérifie la propriété topics_week. Si elle a de nouveaux sujets cette semaine, elle est considérée comme active pour la semaine et compte pour 1. Discourse additionne ensuite le nombre de catégories considérées comme actives. Ce nombre est ensuite comparé à 7,92 que nous avons obtenu ci-dessus.

Vous pouvez le voir ici :

if (filteredCategories.length >= minCategories) {
  statPeriod = period;
  return true;
}

Si le nombre est supérieur à 7,92 (8 catégories actives ou plus cette semaine), Discourse affichera alors 11 / semaine à côté de chaque catégorie si applicable.

Eh bien, que se passe-t-il si le nombre de catégories actives hebdomadaires est inférieur à 7,92 ? Discourse vérifiera alors la même chose, mais avec l’activité mensuelle.

Si le nombre est supérieur à 7,92 (8 catégories actives ou plus ce mois-ci), Discourse affichera alors 22 / mois à côté de chacune de ces catégories si applicable.

Si ni le nombre de catégories actives hebdomadaires ni mensuelles n’est supérieur à 7,92, Discourse utilisera la période par défaut all et affichera le nombre topics_all_time ou 4,4k comme dans votre capture d’écran.

Remarque : Outre les périodes de temps semaine/mois, si applicable, le total ou all est toujours affiché sur mobile.

Alors, essayons de comprendre le problème dans votre message. Un nouvel utilisateur voit 22 / mois et vous, en tant qu’administrateur, voyez 4,4k, qu’est-ce qui se passe ?

Eh bien, vous souvenez-vous de ceci ?

La réponse courte est que vous, en tant qu’administrateur, avez une liste de catégories différente. En tant qu’administrateur, vous avez accès à des catégories privées.

Alors, faisons quelques calculs…

Votre site a 7 catégories de premier niveau visibles pour notre nouvel utilisateur exemple. Le nombre magique est donc :

7 * 0,66 = 4,62

En d’autres termes, vous devez avoir 5 catégories avec de nouveaux sujets cette semaine pour que Discourse affiche 11 / semaine. Ce n’est pas le cas sur votre site car vous n’en avez que 4 qui correspondent aux critères - rappelez-vous, il s’agit de nouveaux sujets, pas de réponses.

Donc, Discourse vérifie ensuite l’activité mensuelle, et dans votre cas, vous avez 6 catégories qui ont eu de nouveaux sujets ce mois-ci. 6 est supérieur à 4,62, donc notre utilisateur exemple voit 4 / mois comme dans votre capture d’écran.

Maintenant, faisons quelques calculs pour vous en tant qu’administrateur. Je ne sais pas combien de catégories privées vous avez, mais supposons que vous ayez 4 catégories privées. Dans ce cas, le nombre total serait de 11 catégories, et le nombre magique serait :

11 * 0,66 = 7,26

Donc, pour que vous voyiez 11 / semaine, il faudrait au moins 8 catégories avec de nouveaux sujets cette semaine. Sinon, il se rabattra sur l’activité mensuelle, et il faudrait au moins 8 catégories avec de nouveaux sujets ce mois-ci pour voir 4 / mois. Si aucune de ces conditions n’est remplie, vous obtiendrez 4,4k comme dans votre capture d’écran d’administrateur.

Cela dit, le nombre magique dans Discourse - 0,66 - semble un peu élevé et pourrait bénéficier d’une réduction pour tenir compte des sites avec un grand nombre de catégories moyennement actives. 40 % des catégories du site étant actives est toujours assez décent. Vous pouvez également tenter votre chance et demander un paramètre de site pour contrôler cela dans un sujet de Feature.

Sinon, vous pouvez contourner tout cela dans un composant de thème. Quelque chose comme ceci dans l’onglet d’en-tête commun de votre thème.

<script type="text/discourse-plugin" version="0.8">
  const { on } = require("discourse-common/utils/decorators");
  const { number } = require("discourse/lib/formatter");
  const I18n = require("I18n").default;

  // la catégorie est considérée comme active si elle a eu au moins ce nombre de sujets cette semaine
  const WEEK_THROSHOLD = 2;

  api.modifyClass("component:parent-category-row", {
    pluginId: "category-activity-indicator",
    @on("didReceiveAttrs")
    setCategoryActivityStats() {
      const category = this.category;

      if (category.topics_week < WEEK_THROSHOLD) {
        return;
      }

      const statPeriod = "week";
      const stat = category[`topics_${statPeriod}`];
      const unit = I18n.t(`categories.topic_stat_unit.${statPeriod}`);

      category.setProperties({
        pickAll: false,
        stat: I18n.t("categories.topic_stat", {
          count: stat,
          number: `<span class="value">${number(stat)}</span>`,
          unit: `<span class="unit">${unit}</span>`,
        }),
        statTitle: I18n.t(`categories.topic_stat_sentence_${statPeriod}`, {
          count: stat,
        }),
      });
    },
  });
</script>

La seule chose que vous devez changer est WEEK_THROSHOLD pour le nombre de nouveaux sujets créés cette semaine dans une catégorie à partir duquel elle est considérée comme active. Le reste devrait fonctionner.

7 « J'aime »