api.onPageChange가 무한 스크롤과 함께 작동하지 않음

아래 코드를 사용하여 태그 링크를 변경하려고 하고 있는데, 페이지를 새로고침하거나 새 페이지로 이동할 때는 잘 작동하지만, 페이지를 아래로 스크롤하여 끝없는 스크롤(endless scroll)로 새 항목이 로드될 때는 작동하지 않습니다:

<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:

호기심에问一下, 제가 위에서 설명한 플러그인 파일 오버라이드 방식도 작동해야 하는 건가요? (만약 그렇다면 제가 무엇을 잘못했는지 아이디어가 있을까요?)