La respuesta corta es que tú, como administrador, tienes una lista de categorías diferente. Como administrador, tienes acceso a categorías privadas. Digo “administrador” aquí para simplificar, pero esto también se aplica a los usuarios normales que tienen acceso a categorías privadas. Por lo tanto, el número total de categorías en tu lista es mayor. Ten en cuenta que solo estoy hablando de categorías, no de subcategorías. Por ahora, puedes ignorar las subcategorías.
Entonces, ¿cómo se relaciona esto con si Discourse te muestra 2 / semana, 17 / mes o 4.4k?
Está diseñado como una indicación de actividad y, para hacerlo más relevante, tiene en cuenta el número total de categorías a las que tienes acceso.
Entonces, ¿cómo funciona toda esta magia? Empecemos con algo de información básica que Discourse almacena para cada categoría. Cada categoría tiene estas cuatro propiedades:
topics_day: 12
topics_month: 95
topics_week: 53
topics_year: 874
topics_all_time: 13982
Cada una representa el número de nuevos temas creados en la categoría o en una de sus subcategorías dentro de ese período. Ignoraremos los períodos de día y año porque no son relevantes aquí.
Veamos algo de código:
y centremos nuestra atención específicamente en esta parte
¿Qué está pasando aquí? Bueno, comenzamos con all (todos) como período predeterminado. Luego vemos minCategories.
minCategories es el factor decisivo para lo que describí anteriormente. Es un número mágico, por así decirlo. En inglés, todo lo que hace es tomar el número de categorías de nivel superior disponibles para ti y multiplicarlo por 0.66.
Así que, digamos que tienes 5 categorías. Multiplicamos eso por 0.66 y obtenemos 7.92.
Luego, Discourse recorre cada categoría y verifica la propiedad topics_week. Si tiene nuevos temas esta semana, se considera activa para la semana y cuenta como 1. Discourse luego suma el número de categorías consideradas activas. Ese número se compara entonces con 7.92 que obtuvimos arriba.
Puedes verlo aquí:
if (filteredCategories.length >= minCategories) {
statPeriod = period;
return true;
}
Si el número es mayor que 7.92 (8 o más categorías activas esta semana), Discourse mostrará 11 / semana junto a cada categoría, si corresponde.
Bueno, ¿qué pasa si el número de categorías activas por semana es menor que 7.92? Discourse verificará lo mismo, pero con la actividad mensual.
Si el número es mayor que 7.92 (8 o más categorías activas este mes), Discourse mostrará 22 / mes junto a cada una de esas categorías, si corresponde.
Si ni el número semanal ni el mensual de categorías activas es mayor que 7.92, Discourse recurrirá al período predeterminado de all (todos) y mostrará el número topics_all_time o 4.4k como en tu captura de pantalla.
Nota: Además de los períodos semana/mes, si corresponde, el total o all (todos) siempre se muestra en dispositivos móviles.
Entonces, intentemos averiguar el problema en tu publicación. Un usuario nuevo ve 22 / mes y tú, como administrador, ves 4.4k, ¿qué ocurre?
Bueno, ¿recuerdas esto?
La respuesta corta es que tú, como administrador, tienes una lista de categorías diferente. Como administrador, tienes acceso a categorías privadas.
Así que hagamos algo de matemáticas…
Tu sitio tiene 7 categorías de nivel superior visibles para nuestro usuario nuevo de ejemplo. Por lo tanto, el número mágico es
7 * 0.66 = 4.62
En otras palabras, necesitas tener 5 categorías con nuevos temas esta semana para que Discourse muestre 11 / semana. Este no es el caso en tu sitio, ya que solo tienes 4 que cumplen los criterios: recuerda, se trata de nuevos temas, no de respuestas.
Entonces, Discourse verifica la actividad mensual, y en tu caso, tienes 6 categorías que han tenido nuevos temas este mes. 6 es mayor que 4.62, por lo que nuestro usuario de ejemplo ve 4 / mes como en tu captura de pantalla.
Ahora, hagamos algo de matemáticas para ti como administrador. No sé cuántas categorías privadas tienes, pero supongamos que tienes 4 categorías privadas. En ese caso, el número total sería de 11 categorías, y el número mágico sería
11 * 0.66 = 7.26
Así que, para que veas 11 / semana, necesitarías al menos 8 categorías con nuevos temas esta semana. Si no es así, recurrirá a la actividad mensual, y necesitarías al menos 8 categorías con nuevos temas este mes para ver 4 / mes. Si ninguna de esas opciones aplica, entonces obtendrías 4.4k como en tu captura de pantalla de administrador.
Dicho esto, el número mágico en Discourse, 0.66, parece un poco alto y podría beneficiarse de una reducción para adaptarse a sitios con un gran número de categorías moderadamente activas. Que el 40 % de las categorías del sitio estén activas sigue siendo bastante decente. También puedes probar suerte y solicitar un ajuste del sitio para controlar eso en un tema de Contribute > Feature.
Aparte de eso, puedes omitir todo esto en un componente de tema. Algo como esto en la pestaña de encabezado común de tu 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;
// la categoría se considera activa si tuvo al menos esta cantidad de temas esta semana
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>
Lo único que necesitas cambiar es WEEK_THROSHOLD por el número de nuevos temas creados esta semana en una categoría en el que se considera activa. El resto debería funcionar simplemente.
