Acabo de tener un nuevo foro de Discourse casi listo y funcionando, pero tengo una pregunta de un miembro a la que no puedo encontrar solución. La comunidad está migrando desde otro foro, y en ese software puedes obtener una URL de un tema que te lleva al punto más recientemente leído, lo cual la gente suele guardar en los marcadores de su navegador. No he logrado encontrar cómo hacerlo en Discourse, ¿alguien tiene alguna idea?
Discourse hace eso por mí automáticamente. Cuando hago clic en un tema, me lleva a donde estaba leyendo por última vez. ¿Es a eso a lo que te refieres?
Me temo que no. La URL a la que te lleva al hacer clic en un tema de la lista de temas es específica del lugar donde estabas leyendo por última vez, no una URL que diga “llévame a donde estaba”. Así que si guardas esa URL en marcadores, luego lees más del tema y regresas a ese marcador, te llevará al mismo lugar al que fuiste originalmente, no al punto donde dejaste de leer más recientemente. Busco una URL genérica que diga “dónde estaba por última vez en este tema”, que pueda guardarse en el navegador y seguir funcionando sin importar cuánto del tema se haya leído.
¿Pero ese marcador no registra el punto específico dentro del tema? Entonces tendrían que agregar explícitamente un nuevo marcador antes de irse cada vez, ¿verdad?
Por lo que sé, Discourse no almacena el último tema visitado, pero sí guarda la marca de tiempo de la última visita para cada tema (topic_users.last_visited_at), por lo que debería ser posible encontrar el último tema visitado y mostrarlo. Sin embargo, esto requerirá un plugin o un widget externo que llame a la API de Discourse.
El siguiente material se incluye solo por completitud sobre este tema.
Como ya se mencionó, lo más cercano a lo que buscas es usar marcadores:
Marca un tema. El marcador te devolverá al primer mensaje, a menos que ya hayas leído todo el tema, en cuyo caso te encontrarás en el último mensaje. Pero la línea de tiempo puede mostrar un botón de retroceso para permitirte volver al último mensaje leído en ese tema; mira el extremo derecho de esta captura de pantalla:
Como señalaste, los marcadores tienen dos limitaciones para tu propósito:
Los marcadores normalmente requieren una acción del usuario para establecerlos, a menos que se use un plugin u otro software para crearlos.
Los marcadores siempre devuelven al tema específico (es decir, al primer mensaje) o al mensaje específico que seleccionó el usuario. No hay opción de tener un marcador que devuelva a un tema o mensaje determinado por el software en el momento en que se accede al marcador.
La URL de la que hablas siempre puede mostrar el último mensaje leído porque el software del foro almacena automáticamente esos datos. Esto es útil porque no siempre sabemos cuándo dejaremos de leer en el foro; puede interrumpirse por un reinicio del sistema, el cierre de sesión de un usuario del sistema o de la aplicación, o un fallo inesperado.
Discourse no tiene una opción para volver al último mensaje visto, pero creo que sería una función útil.
P.D.
Sin embargo, Discourse sí tiene una función que te muestra qué temas visitaste en tu última visita, incluso en los marcadores, lo cual ayuda a indicar qué tema es posible que hayas visto por última vez:
Gracias por esa respuesta tan detallada, realmente ha sido muy útil, incluso si al final resulta que actualmente no hay forma de hacer lo que nos gustaría.
Efectivamente. Es molesto que nunca haya programado en Ruby, porque si lo hubiera hecho, lo habría intentado yo mismo. Supongo que podría ser demasiado trabajo, ya que las listas de temas determinan cuál fue el último mensaje leído en un tema y generan una URL relevante, por lo que podrías tener una nueva URL, como t/topic-title/133114/latest, que luego redirija al lugar correcto.
En cuanto al PS, hmm, lo revisaré. El caso es que tenemos numerosos temas que pueden llegar a tener literalmente cientos de publicaciones, y es posible que no hayas revisado temas específicos durante varias semanas o más, y luego quieras volver a echarles un vistazo y poder acceder directamente desde un marcador del navegador.
Mientras que la vista Más recientes es perfecta para ese escenario, porque todos los numerosos temas con ediciones o nuevos mensajes desde la última visita aparecerán arriba de la línea de la última visita.
Seguías diciendo que el usuario quiere volver a la última conversación que estaba leyendo o teniendo en su última visita, incluso si ese tema no ha tenido cambios.
Esta es la función de reanudación automática que me gustaría, pero no veo que el equipo de Discourse la adopte.
No exactamente, creo que no. Habrá muchos temas diferentes que la gente seguirá. Dentro de una categoría específica del foro, hay docenas y docenas de temas de larga duración, con cientos y cientos de publicaciones, de los cuales mucha gente sigue muchos. Y, obviamente, les gusta entrar, leer muchas publicaciones, pero quizás no hasta el final, y luego volver más tarde para leer un poco más. Y a algunas personas les gusta guardar estos temas en los marcadores del navegador.
Creo que la pestaña de marcadores podría ser una alternativa razonable, ya que, efectivamente, tenías razón: esa vista parece llevarte exactamente al punto donde lo dejaste y también se puede filtrar por categoría.
Dado que el PS en tu respuesta detallada parece ser la solución, seleccionaré ese post como la solución. Fue un gran post incluso sin eso, a decir verdad, realmente informativo.