Creando una página de inicio con filtro personalizado

¿Puedo crear una página de inicio dinámica como esta:

  • 10 Temas Activos Recientemente (esta semana)
  • 5 Temas Creados Más Recientemente (hoy)
  • 5 Temas Más Recientes (esta semana)
  • 5 Temas con Más Respuestas (esta semana)
  • 5 Temas con Más Me Gusta (esta semana)
  • 5 Temas Creados Más Recientemente (ayer o hoy)

Hay un componente de tema a través del cual puedo crear una página de inicio como esta en la Lista de Temas Filtrados de Discourse, pero siento que el inconveniente es que solo funciona con un cierto período de tiempo, por lo que tendría que cambiar el período de tiempo diariamente.

Quiero decir, por ahora, funciona sobre la base de que puedo agregarle fechas, como:

activity-before:AAAA-MM-DD temas con la última actualización antes de la fecha especificada
activity-after:AAAA-MM-DD temas con la última actualización después de la fecha especificada
created-before: AAAA-MM-DD temas creados antes de la fecha especificada
created-after:AAAA-MM-DD temas creados después de la fecha especificada

Pero entonces siempre tendría que cambiar las fechas. ¿Hay alguna alternativa que pueda hacer en el foro?

2 Me gusta

Además, el principal problema con este componente es que repite temas en cada tipo de orden.

¿Tu caso requiere que sean literalmente los temas con más respuestas/me gusta? Si usas la lista de temas /top puedes obtener períodos de tiempo automáticos… los principales factores en vistas, “me gusta” y recuento de publicaciones (y puedes ajustar un poco estos pesos con la configuración del sitio).

Correcto, esta es una complicación al obtener varias listas de temas, un componente necesitaría hacer una referencia cruzada de cada lista y eliminar duplicados. No es muy complicado, pero no creo que esto se haya implementado en ningún componente disponible.

1 me gusta

No se trata solo de respuestas y me gusta, pero sí, solo intento crear una página de inicio de aspecto dinámico.

Entonces, ¿un componente que pueda eliminar el tema duplicado de cualquiera de los campos haría el trabajo?

Sí, no sería demasiado complicado añadir una función de “ocultar duplicados” a Filtered Topic Lists, si @gormus está interesado. La acción findFilteredTopics podría modificarse para almacenar cada ID de tema en una lista y luego eliminar los duplicados.

La desventaja es que si quieres una lista de 10 temas, podrías obtener solo 5 después de eliminar los duplicados… pero eso podría evitarse parcialmente tal vez obteniendo algunos adicionales más allá de lo especificado en la configuración.

1 me gusta

He agregado listas filtradas a las páginas de inicio en varios proyectos antes y advertiría que para poblar varias listas de “más recientes” con filtros superpuestos, realmente necesitas una comunidad muy activa para empezar. Ahora, cuando tu comunidad es tan activa, también tendrás un conjunto de contenido mucho más rico para trabajar en la construcción de una página de inicio dinámica. En ese caso, un bloque de diferentes listas podría parecer estático y no tan atractivo visualmente.

Sin embargo, para un ángulo ligeramente diferente, también podrías explorar simplemente poner una o dos listas con un filtro de tiempo manual. Eso incluso podría sentirse más dinámico para los usuarios. Como en esta vista:

Esa es una función que tomé del tema Central y está disponible aquí como un componente de bloque: Manuel Kostka / Discourse / Blocks / Top Topics · GitLab

4 Me gusta

Es cierto, esto podría funcionar, pero en realidad quería rellenar varios filtros en la página.

2 Me gusta

Sí, eso realmente funciona. Si @gormus estuviera interesado :))

He hecho una actualización hoy que ayudará un poco con esto: FEATURE: allow date-based filters to accept a day count by awesomerobot · Pull Request #33197 · discourse/discourse · GitHub (deberías obtener esto la próxima vez que actualices Discourse)

Esto te permitirá ingresar tu número deseado de días en los filtros activity/created-before/after, por lo que puedes hacer:

activity-after:7 temas activos los últimos 7 días
created-after:1 temas creados después de hace 1 día

También puedes usar 0 para hoy (como después de la medianoche)

7 Me gusta

Caramba, eso fue rápido. ¡¡Gracias!!

2 Me gusta

Hola @awesomerobot, solo quería informarte que he realizado los cambios necesarios y ahora funciona perfectamente. Gracias :))

1 me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.