api.onPageChange не работает с бесконечной прокруткой

Я пытаюсь изменить ссылки на теги с помощью кода ниже, и это работает при обновлении страницы или переходе на новую страницу, но не работает при прокрутке вниз, когда бесконечная прокрутка загружает новые элементы:

<script type="text/discourse-plugin" version="0.8">
	api.onPageChange(() => {
		var tags = document.getElementsByClassName("discourse-tag");
		for (i = 0; i < tags.length; i++) {
			var tag = tags[i];
			var url = tag.href;
			var newUrl = "https://site.com" + url;
			tag.href = newUrl;
		}
	});
</script>

Нужно ли мне использовать что-то другое вместо api.onPageChange или в дополнение к нему?

Да, это не сработает. Это сработает только при смене маршрута. Вам нужно переопределить код, который напрямую рендерит эти теги, вместо использования DOM-выбора.

Спасибо, Роберт! Я надеялся, что хватит чего-то простого! :see_no_evil:

Прошло много времени с тех пор, как я читал руководство по плагинам, но, насколько я помню, всё выглядит примерно так?

  • rails g plugin NAME
  • найдите файл, который хотите изменить
  • скопируйте его в ту же директорию внутри вашего плагина
  • внесите свои изменения

Однако у меня это не работает.

Редактирование этого файла напрямую (строка 29): discourse/app/assets/javascripts/discourse/app/lib/render-tag.js at bbe5d8d5cf1220165842985c0e2cd4c454d501cd · discourse/discourse · GitHub даёт нужный результат, но когда я дублирую файл в следующем расположении, это не имеет никакого эффекта: plugins/my-plugin/app/assets/javascripts/discourse/app/lib/render-tag.js.

Есть какие-то идеи, что я делаю не так? Возможно, что-то изменилось с тех пор, как я читал руководства? (По какой-то причине я думал, что достаточно просто переопределить файлы, чтобы внести небольшие изменения, как в этом случае).

Вам не нужен плагин, это на стороне клиента. Используйте компонент темы.

Спасибо! Как ни странно, я начал настраивать Tag Icons прошлой ночью и смог заставить его работать! :smiley:

Из любопытства, однако, должен ли был сработать метод переопределения файлов плагином, как я описал выше? (Если да, есть ли какие-то идеи, что я делал не так?)