Reftagger 테마 컴포넌트

Reftagger 라이브러리를 사용하면 Discourse 포럼의 성경 구절 참조를 호버 미리보기가 포함된 링크로 변환할 수 있습니다.

@outofthebox의 요청에 따라 이 코드를 기반으로 한 테마 컴포넌트를 만들었습니다.

사용하려는 번역을 선택할 수 있는 설정을 추가했으며, 컴포넌트는 Reftagger 라이브러리를 포함할 수 있도록 콘텐츠 보안 정책(CSP)을 확장합니다.

리포지토리는 여기에서 확인할 수 있습니다.

13개의 좋아요

@RGJ, 우리 커뮤니티는 이 기능을 정말 좋아합니다. 안전하고 사용자 정의가 가능한 방식으로 개발해 주셔서 감사합니다. 이 작업을 Discourse 커뮤니티와 공유해 주신 관대함에 감사드립니다.

5개의 좋아요

지난 18개월 정도 동안 이 기능을 사용해 왔는데, 정말 잘 작동했습니다. 개선되어 더 쉽게 사용할 수 있게 된 것을 기쁘게 생각합니다!

3개의 좋아요

와, 정말 멋지네요.

사용자가 직접 키워드와 미리보기를 정의할 수 있는 비슷한 컴포넌트를 볼 수 있으면 좋겠어요.
예를 들어 용어집을 만들 때 정말 유용할 것 같아요.

1개의 좋아요

이런 작업을 수행하는 auto abbrify words 테마 컴포넌트가 있습니다.

3개의 좋아요

이 기능이 어떻게 작동하는지에 대해 Meta에서 원본 대화를 나눈 여러분과 모든 기여자분들께 진심으로 감사드립니다.

2개의 좋아요

여러분 안녕하세요, Reftagger가 몇 달 동안 아주 잘 작동하다가 갑자기 멈추기 시작했습니다. 책/장/절 형식에 대한 외부 링크는 여전히 자동으로 생성되지만, 호버 미리보기는 로드되지 않습니다.

최신 상태인 것 같습니다. 혹시 아이디어가 있으신 분 계신가요?

1개의 좋아요

어떤 버전의 Discourse를 사용하고 계신가요?

1개의 좋아요

이 정보를 어떻게 찾을 수 있나요?

관리자 대시보드 /admin 어딘가에 있을 겁니다

최신 상태라고만 표시되어 있습니다:

1개의 좋아요

제 환경에서는 Discourse 2.7.7(Safari 기준)에서 정상적으로 작동하는 것 같습니다.

다시 정상적으로 작동하고 있습니다.
Reftagger가 다른 CDN(reftagger.bibliacdn.com)으로 전환된 것으로 보이며, 이 도메인은 콘텐츠 보안 정책(CSP)에 화이트리스트로 등록해야 했습니다. 해당 항목을 추가하고 테마 컴포넌트의 새 버전을 배포했습니다. 사용자는 컴포넌트만 업데이트하시면 됩니다.

3개의 좋아요

찾았습니다. 감사합니다, 선생님 :slightly_smiling_face:

1개의 좋아요

Richard님, 안녕하세요.

오래된 스레드를 다시 꺼내 보았습니다. 이 테마 컴포넌트를 설치했는데 두 가지 문제가 발생하고 있습니다.

첫째는 해당 컴포넌트가 업데이트가 필요하다는 메시지입니다.
[관리자 알림] 테마 'Reftagger’에 업데이트가 필요한 코드가 포함되어 있습니다. (id:discourse.script-tag-discourse-plugin) (자세히 보기)

둘째는 첫 번째 알림과 관련이 있을 수 있는데, 컴포넌트가 업데이트가 필요하다는 내용입니다. 참조가 태그로 표시되지 않고 있으며, 페이지가 정상적으로 로드되지 않고 브라우저 탭에 로딩 원형 표시기가 계속 표시되는 것처럼 보입니다.

이 컴포넌트를 업데이트해 주실 수 있을까요?

ChatGPT를 사용하여 이 작업에 상당한 진전을 이루었고, Logos RefTagger와 Blue Letter Bible을 모두 사용하는 작동하는 reftagger를 만들었습니다.

이것들을 커뮤니티 사용자를 위한 테마 컴포넌트로 번들링할 수 있다면 좋겠지만, 그렇지 않더라도 테마 컴포넌트를 만드는 것은 매우 쉽습니다. 선호하는 코드를 가져와 새 테마 컴포넌트의 JS 탭에 넣으면 됩니다. Discourse의 JS 탭에 있는 기본 코드를 제거해야 합니다.

개선 방법에 대한 피드백이 있다면 환영합니다. 제 실력은 LLM을 안내하는 정도에 그칩니다.

Logos RefTagger 사용 시:

import { apiInitializer } from “discourse/lib/api”;
import loadScript from “discourse/lib/load-script”;

export default apiInitializer(“0.1”, (api) => {
// 1. 스크립트 로드 전에 window에 RefTagger 설정 정의
window.refTagger = {
settings: {
bibleVersion: “ESV”, // 예: 기본 성경 버전
tagChapters: true, // 장(chapter) 참조도 태그
convertHyperlinks: false, // 기존 링크를 다시 태그하지 않음
roundCorners: true,
socialSharing: ,
}
};

// 2. Discourse 게시글 렌더링에 후킹:
api.decorateCooked((element) => {
// 외부 RefTagger 스크립트 로드 (아직 로드되지 않은 경우)
loadScript(“https://api.reftagger.com/v2/RefTagger.js”).then(() => {
// 새 콘텐츠 요소에서 태깅 실행
window.refTagger.tag(element);
});
});
});

BLB ScriptTagger 사용 시:

import { apiInitializer } from “discourse/lib/api”;
import loadScript from “discourse/lib/load-script”;

export default apiInitializer(“0.1”, (api) => {
// 필요 시 로드 전에 BLB ScriptTagger 설정 설정 (기본값 표시)
window.BLB ||= {}; // 전역 BLB 객체 존재 확인
window.BLB.Tagger ||= {};
window.BLB.Tagger.Translation = “NKJV”; // 기본 번역 버전
window.BLB.Tagger.HyperLinks = “all”; // 이미 링크된 참조도 태그
window.BLB.Tagger.TargetNewWindow = true; // 링크가 새 탭에서 열림
// … (필요에 따라 DarkTheme 등 기타 설정)

api.decorateCooked((elem) => {
loadScript(“https://www.blueletterbible.org/assets/scripts/blbToolTip/BLB_ScriptTagger-min.js”)
.then(() => {
if (window.BLB && window.BLB.Tagger) {
window.BLB.Tagger.pageInit(); // 새 콘텐츠의 구절:contentReference[oaicite:6]{index=6} 재스캔
}
});
});
});

이 문제는 이제 해결되었습니다.

이 문제는 위 문제를 해결하기 전에도 재현할 수 없었습니다. 위 문제는 오류가 아닌 단순 경고였을 뿐입니다.

3개의 좋아요

업데이트해 주셔서 정말 감사합니다!

2개의 좋아요