외부 URL용 리다이렉트 페이지

찾고 계신 것은 포스트 데코레이터(post decorator)입니다. 이는 각 포스트가 렌더링되기 전에 스크립트를 실행할 수 있게 해주는 훅(hook)입니다. 플러그인 API의 일부입니다.

이제, 사용자가 하려는 것(모든 외부 링크를 리디렉션하는 것)에 대해 말씀드리자면, 그렇게 많은 마찰(friction)을 추가하는 것은 좋은 아이디어가 아니라고 생각하므로 그 부분으로는 도움을 드릴 수 없습니다. 게다가 그 부분은 이미 해결하신 것 같습니다. 다만, 게시물 내의 모든 외부 링크를 대상으로 설정을 만드는 방법에 대한 주석이 달린 예제를 여기에 공유합니다.

이것은 테마/테마 구성 요소의 header 섹션에 넣어야 합니다.

<script type="text/discourse-plugin" version="0.8">
  // 호스트 이름을 저장하여 재사용할 수 있도록 합니다.
  const siteHostname = location.hostname;
  
  // 모든 포스트에서 이를 수행하기 위해 데코레이터를 만들어 보겠습니다.
  api.decorateCooked(
    post => {
      // 포스트에 링크가 있나요?
      const links = [...post[0].querySelectorAll("a")];
      
      // 링크가 없으면 종료합니다.
      if (!links.length) return;
      
      // 링크가 있으므로, 필터링하여 외부 링크만 가져오겠습니다.
      const externalLinks = links.filter(
        link => link.hostname !== siteHostname
      );
      
      // 외부 링크가 있다면, 작업을 수행합니다. 예를 들어,
      // 각 외부 링크에 클래스를 추가할 수 있습니다.
      externalLinks.forEach(link => {
        link.classList.add('external-link');
        // 여기에 더 많은 작업을 수행합니다.
      });
    },
    // 메모리 누수를 방지하기 위해 데코레이터에 id를 부여합니다.
    { id: "external-link-decorator" }
  );
</script>

다시 말씀드리지만, 사용자를 리디렉션하는 것은 마찰이 너무 크고 금방 지루해질 것입니다. 따라서 외부 링크 옆에 은은한 아이콘을 추가하고 사용자에게 그 의미를 교육하는 등 다른 접근 방식을 고려해 보시는 것이 좋겠습니다.