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 habituales 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 hablo de categorías, no de subcategorías. Puedes ignorar las subcategorías por ahora.
Entonces, ¿cómo se relaciona esto con si Discourse te muestra 2 / semana o 17 / mes o 4.4k?
Está diseñado para ser una indicación de actividad y, para que sea más relevante, tiene en cuenta el número total de categorías a las que tú tienes acceso.
Entonces, ¿cómo funciona toda esta magia? Empecemos con 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 temas nuevos creados en la categoría o en una de sus subcategorías dentro de ese período de tiempo. Ignoremos los períodos de tiempo de día y año porque son irrelevantes aquí.
Veamos algo de código:
y centrémonos específicamente en esta parte
¿Qué está pasando aquí? Bueno, empezamos con all como período de tiempo predeterminado. Luego vemos minCategories
minCategories es aquí el factor decisivo para lo que describí anteriormente. Es una especie de número mágico. En inglés, lo único que hace es tomar el número de categorías de nivel superior disponibles para ti y multiplicarlo por 0.66
Entonces, digamos que tienes 5 categorías. Lo multiplicamos por 0.66 y obtenemos 7.92
Luego, Discourse recorre cada categoría y verifica la propiedad topics_week. Si tiene temas nuevos 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 luego con 7.92 que obtuvimos anteriormente.
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 / week junto a cada categoría si corresponde.
Bueno, ¿y si el número de categorías activas semanalmente es inferior a 7.92? Discourse comprobará 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 / month 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 y mostrará el número topics_all_time o 4.4k como en tu captura de pantalla.
Nota: Además de los períodos de tiempo week/month, si corresponde, el total o all siempre se muestra en dispositivos móviles.
Entonces, intentemos resolver el problema en tu publicación. Un nuevo usuario ve 22 / month y tú, como administrador, ves 4.4k, ¿qué pasa?
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.
Entonces, hagamos algunos cálculos…
Tu sitio tiene 7 categorías de nivel superior visibles para nuestro nuevo usuario de ejemplo. Entonces, el número mágico es
7 * 0.66 = 4.62
En otras palabras, necesitas tener 5 categorías con temas nuevos esta semana para que Discourse muestre 11 / week. Este no es el caso en tu sitio, ya que solo tienes 4 que cumplen los criterios; recuerda, son temas nuevos, no respuestas.
Entonces, Discourse comprueba la actividad mensual y, en tu caso, tienes 6 categorías que han tenido temas nuevos este mes. 6 es mayor que 4.62, por lo que nuestro usuario de ejemplo ve 4 / month como en tu captura de pantalla.
Ahora, hagamos algunos cálculos 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 11 categorías, y el número mágico sería
11 * 0.66 = 7.26
Por lo tanto, para que veas 11 / week, necesitarías al menos 8 categorías con temas nuevos esta semana. Si no, recurrirá a la actividad mensual y necesitarías al menos 8 categorías con temas nuevos este mes para ver 4 / month. Si ninguna de esas se aplica, 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 acomodar sitios con un gran número de categorías moderadamente activas. El 40% de las categorías del sitio activas sigue siendo bastante decente. También puedes probar suerte y solicitar una configuración del sitio para controlar eso en un tema de 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 este número 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 al número de temas nuevos creados esta semana en una categoría en la que se considera activa. El resto debería funcionar.
