Gesamtzahl der Themen / Themen pro Monat auf der Kategorieseite

Die kurze Antwort ist, dass Sie als Administrator eine andere Kategorie-Liste haben. Als Administrator haben Sie Zugriff auf private Kategorien. Ich sage hier Administrator, um es einfach zu halten, aber dies gilt auch für normale Benutzer, die Zugriff auf private Kategorien haben. Die Gesamtzahl der Kategorien auf Ihrer Liste ist also höher. Beachten Sie, dass ich nur von Kategorien spreche, nicht von Unterkategorien. Sie können Unterkategorien vorerst ignorieren.

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

Es ist als Aktivitätsindikator konzipiert und berücksichtigt zur besseren Relevanz die Gesamtzahl der Kategorien, auf die Sie Zugriff haben.

Wie funktioniert all dieser Zauber? 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 einer ihrer Unterkategorien innerhalb dieses Zeitraums erstellt wurden. Ignorieren wir die Zeiträume Tag und Jahr, da sie hier irrelevant sind.

Schauen wir uns etwas Code an:

und konzentrieren wir uns speziell auf diesen Teil:

Was passiert hier? Nun, wir beginnen mit all als Standardzeitraum. Dann sehen wir minCategories.

minCategories ist hier der entscheidende Faktor für das, was ich oben beschrieben habe. Es ist eine Art magische Zahl. Auf Englisch tut es nichts anderes, als die Anzahl der Ihnen zur Verfügung stehenden Top-Level-Kategorien zu nehmen und sie mit 0,66 zu multiplizieren.

Nehmen wir also an, Sie haben 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 sie diese Woche neue Themen hat, gilt sie als aktiv für die Woche und zählt als 1. Discourse zählt dann die Anzahl der als aktiv geltenden Kategorien zusammen. Diese Zahl wird dann mit den oben genannten 7,92 verglichen.

Das sehen Sie hier:

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

Wenn die Zahl größer als 7,92 ist (8 oder mehr aktive Kategorien diese Woche), zeigt Discourse neben jeder Kategorie, falls zutreffend, 11 / Woche an.

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

Wenn die Zahl größer als 7,92 ist (8 oder mehr aktive Kategorien diesen Monat), zeigt Discourse neben jeder dieser Kategorien, falls zutreffend, 22 / Monat an.

Wenn weder die wöchentliche noch die monatliche Anzahl aktiver Kategorien größer als 7,92 ist, greift Discourse auf den Standardzeitraum all zurück und zeigt die Zahl topics_all_time oder 4,4k an, wie auf Ihrem Screenshot.

Hinweis: Neben den Zeiträumen Woche/Monat wird, falls zutreffend, auf Mobilgeräten immer die Gesamtzahl oder “all” angezeigt.

Versuchen wir also, das Problem in Ihrem Beitrag zu ermitteln. Ein neuer Benutzer sieht 22 / Monat und Sie als Administrator sehen 4,4k, was ist los?

Erinnern Sie sich daran?

Die kurze Antwort ist, dass Sie als Administrator eine andere Kategorie-Liste haben. Als Administrator haben Sie Zugriff auf private Kategorien.

Machen wir also eine Rechnung…

Ihre Website hat 7 Top-Level-Kategorien, die für unseren Beispiel-Neuling sichtbar sind. Die magische Zahl ist also:

7 * 0,66 = 4,62

Mit anderen Worten, Sie benötigen 5 Kategorien mit neuen Themen diese Woche, damit Discourse 11 / Woche anzeigt. Dies ist auf Ihrer Website nicht der Fall, da Sie nur 4 haben, die die Kriterien erfüllen – denken Sie daran, es geht um neue Themen, nicht um Antworten.

Also prüft Discourse die monatliche Aktivität, und in Ihrem Fall haben Sie 6 Kategorien, die diesen Monat neue Themen hatten. 6 ist größer als 4,62, also sieht unser Beispielbenutzer 4 / Monat, wie auf Ihrem Screenshot.

Machen wir nun eine Rechnung für Sie als Administrator. Ich weiß nicht, wie viele private Kategorien Sie haben, aber nehmen wir an, Sie haben 4 private Kategorien. In diesem Fall wäre die Gesamtzahl 11 Kategorien, und die magische Zahl wäre:

11 * 0,66 = 7,26

Damit Sie 11 / Woche sehen, benötigen Sie mindestens 8 Kategorien mit neuen Themen diese Woche. Wenn nicht, greift es auf die monatliche Aktivität zurück, und Sie benötigen mindestens 8 Kategorien mit neuen Themen diesen Monat, um 4 / Monat zu sehen. Wenn keines davon zutrifft, erhalten Sie 4,4k, wie auf Ihrem Admin-Screenshot.

Vor diesem Hintergrund scheint die magische Zahl in Discourse – 0,66 – etwas hoch zu sein und könnte von einer Reduzierung profitieren, um Websites mit einer großen Anzahl moderat aktiver Kategorien zu berücksichtigen. 40 % der Website-Kategorien, die aktiv sind, sind immer noch ziemlich gut. Sie können auch Ihr Glück versuchen und in einem #feature-Thema nach einer Website-Einstellung fragen, um dies zu steuern.

Kurz gesagt, Sie können all dies in einer Theme-Komponente umgehen. Etwas wie dies im gemeinsamen Header-Tab Ihres Themes.

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

  // category is considered active if it had at least this many topics this week
  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 Sie ändern müssen, ist WEEK_THROSHOLD auf die Anzahl der neuen Themen, die diese Woche in einer Kategorie erstellt wurden, ab der sie als aktiv gilt. Der Rest sollte einfach funktionieren.

7 „Gefällt mir“