Cambiar el inicio de la lista de temas del router - de Últimos a Siguiendo

¡Hola a todos!

Estoy intentando cambiar el enrutador predeterminado de la lista de temas de inicio, pero aún no he encontrado la manera. ¡Espero que ustedes puedan ayudarme!

Quiero cambiar de “Últimos” a “Siguiendo” (es decir, los temas creados por los usuarios que sigo).

Métodos que he intentado:

  • La forma más eficiente sería agregar un menú superior “Siguiendo”, pero no funcionó.
  • Otra opción fue instalar Custom Top Navigation Links. Esto me permitió agregar enlaces de navegación en la barra de control, pero la ruta “/” (raíz) sigue mostrando “Últimos”.
  • Otra fue manipulando “discourse/app/routes/app-route-map.js”, donde se definen los “filtros”, pero tampoco funcionó.
    • this.route("discovery", { path: "/", resetNamespace: true }, function () {

Mi objetivo:

  • Cambiar la lista de temas que aparece en “http://localhost:3000/” de “Últimos” a “Siguiendo”, algo posible gracias a Discourse Follow. Como esta ruta ya existe, si accedo a “/following” funciona, pero quiero que este comportamiento se aplique a la ruta “/”.

¿Es posible!?

¡Espero que puedan ayudarme!
Saludos cordiales,
Felipe

Mi PR reciente podría ayudarte.

Aquí agregué Marcadores a la vista predeterminada posible:

¡La parte más difícil fue agregar los casos de prueba! :slight_smile:

Lo consideraría como un PR para el plugin. La parte complicada es que actualmente solo aparece si hay algo que mostrar… así que tendrías que tenerlo en cuenta…

¡Hola, Robert! He modificado ambos archivos del PR que mencionaste.

No funcionó. Pensé que con estos cambios sería posible elegir la configuración del sitio “Top menu”. Así que, si se requiere “latest”, pondría “following” - “latest” en secuencia; de esta manera, el inicio se redirigiría a “following”.

Encontré una solución durante el desarrollo usando:

import { setDefaultHomepage } from 'discourse/lib/utilities';

Así que, en mi componente, al principio, agregué:

setDefaultHomepage("following");

Porque en la consola de Rails, encontré una variable SiteSetting.homepage cuyo valor era “latest”.
¡Y funcionó :smiley:!

¿Ves algún problema?

Tengo miedo de cargar “latest” desde el backend y que el inicializador se ejecute en el lado del cliente.

Saludos cordiales,
Felipe

No, no podrás cambiar el archivo Ruby directamente. Fue solo una pista. Después de todo, no vas a enviar un PR al núcleo como hice en ese caso. Tienes que encontrar alguna forma de modificar eso desde el inicializador del plugin en plugin.rb, sospecho… esto será un cambio en el plugin, no en el núcleo.

¡Hola!

En plugin.rb, como dijiste, pude poner “following” como la única opción:

UserOption.class_eval do
	def homepage 
		"following"
	end 
end

Jaja, bueno, esa es una forma de hacerlo, pero en realidad deberías agregarlo como una opción y siempre darle al usuario la posibilidad de cambiarlo… al menos si quieres que esto se integre en el plugin :wink:

Pero sí, buen trabajo, sigue evolucionándolo.

Por cierto, también echa un vistazo a: