Numero totale di argomenti / Argomenti al mese nella pagina della categoria

La risposta breve è che tu, in quanto amministratore, hai un elenco di categorie diverso. Come amministratore, hai accesso alle categorie private. Uso il termine “amministratore” per semplificare, ma questo vale anche per gli utenti regolari che hanno accesso alle categorie private. Quindi, il numero totale di categorie nel tuo elenco è maggiore. Nota che sto parlando solo delle categorie principali, non delle sottocategorie. Per ora puoi ignorare le sottocategorie.

Quindi, come si collega questo al fatto che Discourse ti mostri 2 / settimana o 17 / mese o 4,4k?

È progettato per essere un indicatore di attività e, per renderlo più pertinente, tiene conto del numero totale di categorie a cui hai accesso.

Come funziona tutta questa magia? Partiamo da alcune informazioni di base che Discourse memorizza per ogni categoria. Ogni categoria ha queste quattro proprietà:

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

Ognuna rappresenta il numero di nuovi argomenti creati nella categoria o in una delle sue sottocategorie entro quel periodo. Ignoriamo i periodi giornaliero e annuale perché non sono rilevanti in questo contesto.

Diamo un’occhiata a questo codice:

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

e concentriamoci specificamente su questa parte

Cosa sta succedendo qui? Beh, partiamo da all (tutti) come periodo di default. Poi vediamo minCategories.

minCategories è il fattore decisivo per quanto ho descritto sopra. È una specie di numero magico. In parole povere, prende il numero di categorie di primo livello disponibili per te e lo moltiplica per 0,66.

Quindi, diciamo che hai 5 categorie. Moltiplichiamo per 0,66 e otteniamo 7,92.

Poi, Discourse scorre ogni categoria e controlla la proprietà topics_week. Se ha nuovi argomenti questa settimana, è considerata attiva per la settimana e conta come 1. Discourse poi conta il numero di categorie considerate attive. Questo numero viene poi confrontato con 7,92 che abbiamo ottenuto sopra.

Puoi vederlo qui:

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

Se il numero è maggiore di 7,92 (8 o più categorie attive questa settimana), Discourse mostrerà 11 / settimana accanto a ciascuna categoria, se applicabile.

Ebbene, cosa succede se il numero di categorie attive settimanalmente è inferiore a 7,92? Discourse controllerà la stessa cosa ma con l’attività mensile.

Se il numero è maggiore di 7,92 (8 o più categorie attive questo mese), Discourse mostrerà 22 / mese accanto a ciascuna di quelle categorie, se applicabile.

Se né il numero settimanale né quello mensile di categorie attive sono maggiori di 7,92, Discourse tornerà al periodo di default all e mostrerà il numero topics_all_time o 4,4k come nella tua screenshot.

Nota: Oltre ai periodi settimana/mese, se applicabili, il totale o all è sempre mostrato su mobile.

Quindi, proviamo a capire il problema nel tuo post. Un nuovo utente vede 22 / mese e tu, come amministratore, vedi 4,4k, perché?

Beh, ricordi questo?

La risposta breve è che tu, in quanto amministratore, hai un elenco di categorie diverso. Come amministratore, hai accesso alle categorie private.

Quindi, facciamo un po’ di matematica…

Il tuo sito ha 7 categorie di primo livello visibili al nostro esempio di nuovo utente. Quindi il numero magico è

7 * 0,66 = 4,62

In altre parole, devi avere 5 categorie con nuovi argomenti questa settimana affinché Discourse mostri 11 / settimana. Questo non è il caso sul tuo sito, poiché hai solo 4 categorie che soddisfano i criteri: ricorda, si tratta di nuovi argomenti, non di risposte.

Quindi, Discourse controlla l’attività mensile e, nel tuo caso, hai 6 categorie che hanno avuto nuovi argomenti questo mese. 6 è maggiore di 4,62, quindi il nostro utente di esempio vede 4 / mese come nella tua screenshot.

Ora, facciamo un po’ di matematica per te come amministratore. Non so quante categorie private hai, ma supponiamo che tu ne abbia 4 private. In tal caso, il numero totale sarebbe 11 categorie e il numero magico sarebbe

11 * 0,66 = 7,26

Quindi, per vedere 11 / settimana, dovresti avere almeno 8 categorie con nuovi argomenti questa settimana. In caso contrario, tornerà all’attività mensile e dovresti avere almeno 8 categorie con nuovi argomenti questo mese per vedere 4 / mese. Se nessuna di queste condizioni si applica, otterrai 4,4k come nella tua screenshot da amministratore.

Detto questo, il numero magico in Discourse, 0,66, sembra un po’ alto e potrebbe trarre vantaggio da una riduzione per adattarsi ai siti con un gran numero di categorie moderatamente attive. Il 40% delle categorie del sito attive è comunque piuttosto decente. Puoi anche provare a chiedere una configurazione del sito per controllarlo in un argomento Contribute > Feature.

In alternativa, puoi aggirare tutto questo in un componente del tema. Qualcosa come questo nella scheda “header comune” del tuo tema.

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

  // una categoria è considerata attiva se ha avuto almeno questo numero di argomenti questa settimana
  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>

L’unica cosa che devi modificare è WEEK_THROSHOLD nel numero di nuovi argomenti creati questa settimana in una categoria a partire dal quale viene considerata attiva. Il resto dovrebbe funzionare automaticamente.