텍스트를 교체하고 동적으로 업데이트하는 방법

특정 게시물(약 100개이며 계속 증가 중)에 면책 조항이나 고지 내용을 추가해야 합니다. 고지 내용은 향후 변경될 수 있으므로, 100개의 게시물 각각에 [DISCLOSURE-GOES-HERE]를 추가하고 싶습니다. 수동으로 추가하는 것은 문제없습니다. 하지만 향후 고지 내용을 업데이트할 때, 단 한 곳만 수정하고 싶습니다.

시도해 본 방법:

  1. Watched Words. 기존 게시물은 게시물을 편집하기 전까지는 업데이트된 고지 내용이 표시되지 않는다는 문제가 있습니다. 이 용도에는 목적이 무색해집니다.

  2. 요소의 innerHTML을 대체하는 Javascript. 제가 잘못한 것 같습니다. 자식 노드 대체와 관련된 오류가 발생했습니다:

<script type="text/discourse-plugin" version="0.8">
    var disclosures = "• Important Disclosures:  We are not responsible, etc, etc."
    api.decorateCooked($elem => {
        var el = $elem[0];
        el.innerHTML = el.innerHTML.replace('[DISCLOSURE-GOES-HERE]', disclosures);
    });
</script>
  1. Auto-linkify 테마 컴포넌트. 다른 용도에는 유용하지만, 저는 고지 링크가 아니라 고지 텍스트를 표시하고 싶습니다.

  2. rails 콘솔에서 텍스트를 교체할 수 있다는 것은 알고 있지만, 관리자가 이를 유지 관리하길 원합니다.

저는 Auto Linkify Words 컴포넌트의 코드를 기반으로 유사한 작업을 수행해 보았습니다.

면책 조항을 자주 변경하지 않는다면, 변경할 때 패턴에 일치하는 모든 게시물을 다시 생성(Rebake)하는 방법을 고려해 볼 수 있습니다.

이 해결책의 장점은 해당 텍스트가 게시물을 볼 때마다 매번 다시 렌더링되지 않는다는 것입니다.

여기서 도움이 될 텍스트 기반 접근 방식이 있습니다: 공개 메시지를 "상시 유효(evergreen)"하게 만들고, 경고의 세부 사항에 대한 링크를 제공하는 것입니다. 예를 들어…

중요 공개 사항: 이 주제에 포함된 주장에 대해 우리는 책임이 없으며, 법적 의무가 없거나 심지어 그 내용에 대해 잘 알지 못합니다.

…이렇게 하는 대신, 다음과 같은 방식을 권장합니다:

중요 공개 사항: 이 주제에는 더 많은 맥락이 필요한 내용이 포함될 수 있으며, 해당 내용은 공개 목록에서 제공됩니다.

이렇게 하면 대부분의 업데이트 작업은 해당 페이지 한 곳으로 집중될 수 있으며, 이 페이지는 Discourse의 주제(토론)로 만들어 쉽게 편집 및 업데이트할 수 있습니다. :slight_smile: