Gesamtzahl der Themen / Themen pro Monat auf der Kategorieseite

Die kurze Antwort lautet: Du hast als Administrator eine andere Kategorienliste. Als Admin hast du Zugriff auf private Kategorien. Ich sage hier „Admin“, um es einfach zu halten, aber das Gleiche gilt auch für normale Benutzer, die Zugriff auf private Kategorien haben. Daher ist die Gesamtzahl der Kategorien in deiner Liste höher. Beachte, dass ich hier nur von Kategorien spreche, nicht von Unterkategorien. Unterkategorien kannst du vorerst ignorieren.

Wie hängt das nun damit zusammen, ob Discourse dir 2 / Woche oder 17 / Monat oder 4,4k anzeigt?

Dies ist als Indikator für die Aktivität konzipiert. Um relevanter zu sein, berücksichtigt es die Gesamtzahl der Kategorien, auf die du Zugriff hast.

Wie funktioniert diese Magie also? Beginnen wir mit einigen grundlegenden Informationen, die Discourse für jede Kategorie speichert. Jede Kategorie hat diese vier Eigenschaften:

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

Jede repräsentiert die Anzahl der neuen Themen, die in der Kategorie oder in einer ihrer Unterkategorien innerhalb dieses Zeitraums erstellt wurden. Lassen wir die Zeiträume für Tag und Jahr außen vor, da sie hier irrelevant sind.

Schauen wir uns den Code an:

discourse/app/assets/javascripts/discourse/app/models/category-list.js at 1472e47aae5bfdfb6fd9abfe89beb186c751f514 · discourse/discourse · GitHub

und konzentrieren wir uns speziell auf diesen Teil

Was passiert hier? Wir beginnen mit all (alle) als Standardzeitraum. Dann sehen wir minCategories.

minCategories ist hier der entscheidende Faktor für das, was ich oben beschrieben habe. Es ist sozusagen eine magische Zahl. Vereinfacht ausgedrückt: Sie nimmt die Anzahl der für dich verfügbaren Hauptkategorien und multipliziert sie mit 0,66.

Nehmen wir an, du hast 5 Kategorien. Wir multiplizieren das mit 0,66 und erhalten 7,92.

Dann durchläuft Discourse jede Kategorie und prüft die Eigenschaft topics_week. Wenn diese Woche neue Themen erstellt wurden, gilt die Kategorie als für die Woche aktiv und zählt als 1. Discourse zählt dann die Anzahl der als aktiv geltenden Kategorien. Diese Zahl wird dann mit den oben erhaltenen 7,92 verglichen.

Das siehst du hier:

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

Wenn die Zahl größer ist als 7,92 (also 8 oder mehr aktive Kategorien in dieser Woche), zeigt Discourse daneben 11 / Woche an, falls zutreffend.

Nun, was ist, wenn die Anzahl der wöchentlich aktiven Kategorien niedriger ist als 7,92? Discourse prüft dann dasselbe, aber mit der monatlichen Aktivität.

Wenn die Zahl größer ist als 7,92 (also 8 oder mehr aktive Kategorien in diesem Monat), zeigt Discourse daneben 22 / Monat an, falls zutreffend.

Wenn weder die wöchentliche noch die monatliche Anzahl aktiver Kategorien größer ist als 7,92, fällt Discourse auf den Standardzeitraum all (alle) zurück und zeigt die Zahl topics_all_time oder 4,4k an, wie in deinem Screenshot.

Hinweis: Neben den Zeitrahmen Woche/Monat, falls zutreffend, wird die Gesamtzahl oder alle auf mobilen Geräten immer angezeigt.

Versuchen wir also, das Problem in deinem Beitrag zu lösen. Ein neuer Benutzer sieht 22 / Monat und du als Admin siehst 4,4k. Was ist los?

Nun, erinnerst du dich noch daran?

Die kurze Antwort lautet: Du hast als Administrator eine andere Kategorienliste. Als Admin hast du Zugriff auf private Kategorien.

Rechnen wir also ein bisschen…

Deine Seite hat 7 Hauptkategorien, die für unseren Beispiel-Neubenutzer sichtbar sind. Die magische Zahl ist also:

7 * 0,66 = 4,62

Mit anderen Worten: Du musst 5 Kategorien mit neuen Themen in dieser Woche haben, damit Discourse 11 / Woche anzeigt. Das ist auf deiner Seite nicht der Fall, da nur 4 die Kriterien erfüllen – denk daran, es sind neue Themen, keine Antworten.

Discourse prüft dann die monatliche Aktivität, und in deinem Fall hast du 6 Kategorien, die in diesem Monat neue Themen hatten. 6 ist größer als 4,62, also sieht unser Beispielbenutzer 4 / Monat wie in deinem Screenshot.

Nun rechnen wir für dich als Admin. Ich weiß nicht, wie viele private Kategorien du hast, aber nehmen wir an, du hättest 4 private Kategorien. In diesem Fall wäre die Gesamtzahl 11 Kategorien und die magische Zahl wäre:

11 * 0,66 = 7,26

Damit du 11 / Woche siehst, bräuchtest du mindestens 8 Kategorien mit neuen Themen in dieser Woche. Wenn nicht, fällt es auf die monatliche Aktivität zurück, und du bräuchtest mindestens 8 Kategorien mit neuen Themen in diesem Monat, um 4 / Monat zu sehen. Wenn keines davon zutrifft, erhältst du 4,4k wie in deinem Admin-Screenshot.

In diesem Sinne scheint die magische Zahl in Discourse – 0,66 – etwas hoch zu sein und könnte von einer Reduzierung profitieren, um Seiten mit einer großen Anzahl mäßig aktiver Kategorien besser zu berücksichtigen. Dass 40 % der Seitenkategorien aktiv sind, ist immer noch ziemlich anständig. Du kannst auch versuchen, in einem #contribute:feature-Thema nach einer Seiteneinstellung zu fragen, die das steuert.

Alternativ dazu kannst du das Ganze in einer Theme-Komponente umgehen. Etwas wie dieses im Tab „Gemeinsamer Header“ deines Themas:

<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;

  // Eine Kategorie gilt als aktiv, wenn sie in dieser Woche mindestens so viele Themen hatte
  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>

Das Einzige, was du ändern musst, ist WEEK_THROSHOLD auf die Anzahl der in dieser Woche in einer Kategorie erstellten neuen Themen, ab der sie als aktiv gilt. Der Rest sollte einfach funktionieren.