Ocultar categorías específicas de la página principal sin silenciar o cómo obtener el recuento de nuevos temas en una categoría silenciada

Hay tantos temas publicados en mi comunidad en una categoría en particular.

A veces, la gente lo encuentra molesto y quiere eliminarlo de la página principal.
Sin embargo, incluso a estos usuarios no les interesan por completo esas categorías, ni quieren silenciarlas por completo.

Así que se me ocurrieron dos enfoques.
1: Colocar una casilla de verificación en la página principal para seleccionar si se muestra o no una categoría en particular.
2: En lugar de silenciar esa categoría, mostrar el número de Temas Nuevos en la categoría silenciada en la página principal. Los usuarios pueden ver inmediatamente la categoría haciendo clic en la pestaña de esa categoría en particular añadida a la barra de navegación.

De hecho, podría mostrar el número de Temas Nuevos en 2, pero me di cuenta justo después de completar el componente de que no podía obtener el número de Temas Nuevos en la categoría silenciada… Olvidé comprobar la categoría silenciada…

Así que estoy considerando el enfoque 1 a continuación, pero no sé cómo funciona la consulta de la página principal ni cómo ocultar ciertas categorías…

O incluso una solución para el enfoque 2 (cómo obtener el número de Temas Nuevos en la categoría Silenciada) estaría bien.

Cualquier ayuda sería muy apreciada.

1 me gusta

Hola @Programer-D
Puedes probar GitHub - keegangeorge/discourse-hide-categories: This is a theme component that allows you to hide specific categories from either the hamburger menu or category boxes.
o la forma CSS.

Muchas gracias.

El CSS era un punto ciego, pero acabo de probar algunas cosas y no parece funcionar muy bien.
No soy hablante nativo de inglés, así que supongo que no lo expliqué lo suficientemente bien.
En el 1, la notificación debe establecerse por debajo de lo normal y ciertas categorías deben ocultarse.
En CSS, puedo obtener la clase de categoría y ocultarla, pero parece que también borra Watching y Tracking… Intentaré encontrar una manera de dar una clase basada en la configuración de notificación de cada tema.

Además, investigué un poco y parece que la capacidad de eliminar categorías de la parte superior fue una característica muy debatida hace unos 2 años y se ha eliminado y reemplazado con silenciar.

Creo que quienes se opusieron a reemplazarlo por completo con silenciar tenían razón. Silenciar es una buena característica. Pero la brecha entre normal y silenciar es demasiado grande y silenciar deja la categoría muy atrás.
Hubiera sido bueno tener algo intermedio para otra configuración de notificación.

Le daré más vueltas…

Creo que hay un plugin para replicar el comportamiento anterior de ‘suprimir’, ¿si eso sirve de algo?

Muchas gracias.
Estaba revisando un tema de discusión antiguo y se hablaba de crear un plugin así y estaba intentando encontrarlo.

Lo probaré tan pronto como pueda.

1 me gusta

De todos modos, parece que, de forma predeterminada, se suprime la visualización de todas las configuraciones de notificación.
Esto sigue siendo funcional (aunque en retrospectiva, CSS tampoco está mal), pero intentaré perfeccionarlo y ver si es posible ocultar solo la configuración de notificación normal y silenciada.

Dado que es un plugin, parece haber margen de mejora, así que he recuperado un poco de motivación. Muchas gracias.

No soy hablante nativo de inglés

¿Cuál es tu idioma nativo? Si es ruso / ucraniano, bienvenido a PM.
Revisaré más esta noche sobre tu problema.

Una idea más: limita esta categoría solo a un grupo en particular y ofrece a los usuarios la opción de unirse cuando lo necesiten.
O que se unan por defecto y dejen de participar en el grupo cuando ya no quieran verlo más.

También puedes editar CSS para diferentes grupos, de modo que, por ejemplo, pueda haber un botón para unirse a este grupo fácilmente.

Investigué un poco el plugin y no parece fácil… Miré dentro de result = Topic::ActiveRecord y no parece contener ningún dato relacionado con las notificaciones.

Además, me pregunto si es posible obtener la información de temas individuales desde aquí y obtener el notification_level.
He creado plugins que también involucran algo de Ruby, pero me he basado principalmente en Javascript, así que no sé mucho sobre Ruby.

Quizás… me gustaría iterar sobre el contenido de “result” para obtener información detallada de cada tema, y registrar los IDs de los temas de aquellos temas cuyo notification_level sea “Tracking” o “Watching” y almacenarlos en la lista, y añadir a la cláusula where “OR me imagino que funcionaría bien si usas `topics.topic_id IN (#{topic_ids.join(‘,’)})”. Sé que no es un código muy elegante, y no estoy familiarizado con Ruby, así que no estoy seguro de si funcionaría…

Buscaré una manera de llamar a Topic por ID desde Ruby.

Muchas gracias.
No había pensado en usar grupos… pero si la modificación actual del plugin no funciona, lo tendré en cuenta.

No entiendo todo correctamente, pero de alguna manera funcionó.

En caso de que alguien más quiera hacer lo mismo, lo dejaré aquí.

Línea 17 de plugin.rb del plugin que me enseñó JammyDodger.

result.where("topics.category_id NOT IN (#{category_ids.join(",")})")

a

result.where("topics.category_id NOT IN (#{category_ids.join(",")}) OR tu.notification_level IN (2,3)")

Los temas “Tracking” y “Watching” permanecen en la página principal, pero el tema “Normal” se oculta de la página principal.
Me tomó un tiempo porque no entendía ActiveRecord correctamente, pero si hubiera comunicado el problema adecuadamente, podría haber sido un problema fácil para ti.

No estoy 100% seguro de si te sigo, pero si ‘silencias por defecto’ una categoría desde la configuración de administrador categorías silenciadas por defecto, ¿suena a que eso ya hace algo similar? Los temas no aparecerán en la lista de “Últimos”, pero todos son visibles si vas a la página de la categoría. Y si un usuario interactúa con uno para que se convierta en “seguimiento” o “observando”, entonces esos sí aparecen en sus listas de temas.

¿Es eso lo que buscas?

La configuración de silenciar cumplía más o menos los requisitos, pero había un problema: ya no recibía Nuevos Temas.

Creé un componente para obtener el recuento de estos temas, pero me di cuenta de que Silenciar no obtiene el recuento de Nuevos Temas porque el tema silenciado no se cuenta en Nuevos Temas.

Creé un componente para obtener el recuento de este tema, pero noté que Silenciar no obtiene Nuevos Temas, por lo que no pude obtener el número de temas nuevos.

Por eso estaba buscando una manera de evitar que apareciera en la página principal con la configuración de notificación Normal.

Esta puede ser una situación especial. Para una categoría determinada, hay un número indeseable de temas no leídos en la página principal, mientras que la configuración predeterminada de Silenciar dificulta la detección de temas nuevos y aleja excesivamente a los usuarios de la categoría. No queríamos hacer eso porque un gran número de temas en la página principal significa una categoría muy próspera.

Quizás este sea un problema que debería haberse resuelto educando a los usuarios, pero queríamos hacer lo que pudiéramos de todos modos, y nos alegramos de haber logrado cumplir los requisitos.

2 Me gusta

Ah, ya veo. Me alegra que hayas encontrado una solución que te funcione. :+1::slightly_smiling_face: