Изменить список тем: домашний роутер — с «Последние» на «Подписки»

Всем привет!

Я пытаюсь изменить маршрут списка тем по умолчанию на главной странице, но пока не нашел способа! Надеюсь, вы сможете мне помочь.

Я хочу изменить маршрут с «Последние» на «Подписки» (то есть темы, созданные пользователями, на которых я подписан).

Способы, которые я уже пробовал:

  • Самый эффективный способ — добавить пункт меню «Подписки» в верхнее меню, но это не сработало.
  • Другой способ — установка плагина Custom Top Navigation Links. Он позволил мне добавить ссылки в панель навигации, но маршрут «/» (корневой) по-прежнему ведет на «Последние».
  • Третий способ — изменение файла discourse/app/routes/app-route-map.js, где определены «фильтры». Но и это не помогло.
    • this.route("discovery", { path: "/", resetNamespace: true }, function () {

Моя цель:

  • Изменить список тем, который отображается по адресу «http://localhost:3000/», с «Последние» на «Подписки». Это возможно благодаря плагину Discourse Follow. Поскольку этот маршрут уже существует, переход по «/following» работает, но я хочу, чтобы этот функционал был доступен по пути «/».

Это возможно!?

Надеюсь на вашу помощь!
С уважением,
Фелипе

Мой недавний PR может вам помочь.

Здесь я добавил закладки в возможные представления по умолчанию:

Самым сложным было добавить тестовые случаи! :slight_smile:

Я бы рассмотрел это как PR к плагину. Сложность в том, что сейчас он отображается только если есть что показать… так что вам нужно это учесть…

Привет, Роберт! Я изменил оба файла из PR, о котором ты упоминал.

  • discourse/app/models/user_option.rb
    • когда 7, то “following”
  • discourse/app/controllers/preferences/interface.js

Не сработало. Я думал, что с этими изменениями станет возможным выбрать настройки сайта “Top menu”. Поэтому, если требуется “latest”, я бы поставил последовательность “following” - “latest”, чтобы главная страница перенаправляла на “following”.

Во время разработки я нашёл способ через:

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

Так что в начале моего компонента я добавил:

setDefaultHomepage("following");

Потому что в Rails Console я обнаружил переменную SiteSetting.homepage, которая имела значение “latest”.
И это сработало :smiley:!

Ты видишь какие-либо проблемы?

Я беспокоюсь о загрузке “latest” с бэкенда и об инициализаторе, который загружается на стороне клиента.

С наилучшими пожеланиями,
Фелипе

Нет, вы не сможете напрямую изменить файл Ruby. Это была лишь подсказка. В конце концов, вы не будете отправлять PR в основную ветку, как это делал я в том случае. Скорее всего, вам придётся найти способ внести изменения из инициализатора плагина в файле plugin.rb… Это будет изменение самого плагина, а не основной части.

Йо!

В plugin.rb, как ты и сказал, я смог, указав «following» как единственный вариант:

UserOption.class_eval do
	def homepage 
		"following"
	end 
end

Ха-ха, ну это один из способов, но на самом деле вам стоит добавить это как опцию и всегда давать пользователю возможность её изменить… по крайней мере, если вы хотите, чтобы это было включено в плагин :wink:

Но да, отличная работа, продолжайте развивать проект.

Кстати, также обратите внимание на: