Embed Discourse comments on another website via Javascript

현재는 이것이 가능하다고 생각합니다. 토픽을 처음 생성할 때 embed_url 속성을 설정할 수 있습니다. 저희 WordPress 플러그인은 여기서 그렇게 하고 있습니다: wp-discourse/lib/discourse-publish.php at main · discourse/wp-discourse · GitHub. 토픽이 생성된 후에는 API를 통해 embed_url 속성을 업데이트할 수 없습니다.

3개의 좋아요

정말 좋습니다! 그렇다면 API 문서가 업데이트되어야 할 것 같습니다!

업데이트 API 메서드에 해당 속성을 추가하려면 어떤 조치가 필요할까요? 그러면 이 문제를 제대로 해결할 수 있을 것 같습니다.

4개의 좋아요

안녕하세요, 블로그의 게시물을 포럼 게시물과 이 방법으로 연결하려고 하는데 계속 어려움을 겪고 있습니다. 여기 다른 사용자들 중 일부와 마찬가지로 iframe의 content-security-policy와 관련된 유사한 문제를 겪고 있는 것 같습니다. 제 블로그는 Jekyll로 생성되어 GitHub에 호스팅되고 있고, Discourse는 Digital Ocean에 호스팅되어 있습니다. 각각의 주소는 blendertube.com과 forum.blendertube.com입니다.

브라우저에서 보고된 오류는 다음과 같습니다:

Content Security Policy 지시문 "frame-ancestors ‘self’ blendertube.com"을 위반하는 조상 요소가 있으므로 'PIRATE.FM — World's First Fully AI-Run Underground Radio Station 프레임을 표시하는 것을 거부했습니다.

이것이 제 Discourse 인스턴스의 SSL과 관련이 있을까요?

다음은 몇 가지 스크린샷입니다:

도움을 주실 수 있기를 바랍니다. 감사합니다!

1개의 좋아요

다음은 또 다른 스크린샷입니다:

1개의 좋아요

current_page.url을 WordPress WooCommerce 제품 페이지의 URL로 대체하는 문법이 무엇인지 아는 분이 있을까요? 각 페이지마다 코드를 커스터마이징할 필요가 없도록 하고, 모든 페이지에 쉽게 적용할 수 있기를 원합니다.

discourseEmbedUrl의 자체 도메인 값을 'http://eviltrout.com<%= current_page.url %>'로 대체해 보았지만, WP에서는 작동하지 않았습니다.

1개의 좋아요

여기에는 새로운 noindex, indexifembedded 태그가 필요할 것 같습니다.

수정 @codinghorror는 유사한 사용 사례(토픽 임베드)에서 이 아이디어가 좋다고 생각했습니다: 이곳을 확인하세요

2개의 좋아요

다음 내용이 어떻게 가능한지(또는 가능한지) 파악이 안 됩니다:

Discourse 인스턴스의 기본 테마가 다크일 때, 임베드된 테마가 어떻게 라이트가 될 수 있나요?

브라우저 설정에 문제가 없다면, @codinghorror님의 구현 방식이 원래 그런 것 같습니다. 우아하게 이렇게 구현하는 방법은 무엇인가요? :smiley:

2개의 좋아요

혹시 다른 분들도 이 방법을 시도해 보신다면, discourseEmbedUrl은 Thinkific LMS 수업에 토픽을 직접 임베드하려 할 때 제 환경에서는 작동하지 않았지만, topicId 방식은 정상적으로 작동했습니다.

1개의 좋아요

저희 블로그에 디스커스(Discourse) 댓글을 임베드하기 위해 이 기능을 사용하고 있었습니다. 처음에는 완벽하게 잘 작동했습니다. 그런데 최근에는 새로운 블로그 게시물들(1년 미만 :rofl:)에서 슬러그(slug)가 생성되지 않는 문제가 있는 것 같습니다. 이 경우처럼 슬러그가 없기 때문에 하이퍼링크가 잘못 생성되고 있습니다.

슬러그 생성 방식은 ASCII로 설정되어 있고, 허용된 호스트는 www.gyandhan.com으로 설정되어 있습니다.

<script type="text/javascript">
  DiscourseEmbed = { discourseUrl: 'https://discussions.gyandhan.com/',
                     discourseEmbedUrl: '<%= request.original_url.split('?').first%>' };

  (function() {
    var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
    d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
  })();
</script>

당연한 말을 다시 한 번 정리하자면, 제가 확인한 문제는 임베드를 통해 생성된 토픽에 슬러그도 제목도 입력되어 있지 않다는 점입니다. 왜 이런 문제가 발생하는지는 아직 정확히 알지 못합니다.

1개의 좋아요

안녕하세요, 모두. 기초적인 질문일 수 있어 죄송합니다.

현재 확인한 바로는 임베디드 경험(embedded experience)에서는 스레드 내의 일부 게시글만 읽을 수 있고, 웹사이트 내에서 상호작용은 불가능한 것 같습니다. 더 많은 댓글을 로드하거나 답글을 쓰거나 프로필을 클릭하면 다시 discourse로 돌아가게 되죠.

discourse가 아닌 완전히 제3자 웹사이트에서만 작동하는 임베디드 경험 버전이 있나요?

사이트가 다크 모드와 라이트 모드 사이에서 전환될 때, 임베드된 부분에 색상 모드를 전환하도록 알리는 방법은 무엇인가요?

아래와 같이 Embedding Allowed Hosts를 설정했습니다.


하지만 iframe의 body에 클래스를 추가하려고 하면 iframe.contentDocument가 null로 나오며, document.getElementById("discourse-embed-frame").contentWindow.document를 사용하면 다음과 같은 오류가 발생합니다:
image

Discourse가 생성된 스레드의 제목(또는 최소한 슬러그)으로 사용할 특정 문자열을 iframe을 임베드하는 사이트에서 어떻게 제공할 수 있을까요? example.com/12345와 같이 텍스트 콘텐츠를 포함하는 임베드 URL을 사용하고 있는데, 현재 스레드 제목에는 콘텐츠에서 추출된 단어들이 사용되고 있습니다. 저는 대신 "12345"가 사용되기를 원합니다.

문서의 <title> 태그를 읽는 것이 아닌가요?

아, 그러면 말이 되겠네요. 제 타이틀은 "12345"보다 더 화려한데, 시간이 지남에 따라 변경될 수 있습니다. 반면 "12345"는 안정적으로 유지되죠. 그래서 저는 그쪽을 사용하려고 합니다.

조금 테스트해 보았습니다: 스크레이퍼가 실제로 <title>text</title>를 가져오는 것이 맞습니다. <title>12345</title>로 설정하고, HTML 문서 하단에 <script>document.title = "fancy title";</script>를 추가하여 인간 사용자를 위한 제목을 오버라이드하면 정상적으로 동작합니다. 생성된 스레드는 제목과 슬러그 URL에 "12345"를 사용하는 반면, 임베딩이 발생하는 페이지에서는 인간 사용자들이 보기 좋은 제목을 확인할 수 있습니다.

힌트 감사합니다!

2개의 좋아요

여러분 안녕하세요,

#tag로 어떤 주제의 게시글을 가져올 수 있는지 알고 싶습니다.
예를 들어, 메인(비-Discourse) 웹사이트에는 이름으로 정의된 페이지가 있습니다. 이를 “My show”(/myshow)이라고 부르죠.

마찬가지로, 우리의 Discourse 인스턴스에는 "The Show"에 대한 많은 주제들이 있습니다. 이 주제들은 동일한 해시태그 #theshow를 가지고 있으며, 사람들은 시즌이나 이벤트에 따라 이들을 탐색할 수 있습니다.

핵심은 #theshow 태그가 있는 모든 주제에서 최신 게시글을 가져오는 것입니다. 이것이 가능한가요?

가장 가까운 기능은 특정 태그 아래에서 활동 순으로 정렬된 모든 토픽을 가져오는 것입니다. Embedding a list of Discourse Topics in another site 를 확인해 보세요.

2개의 좋아요

제프의 블로그처럼 임베드 댓글에서 첫 번째 게시물을 방지하는 방법

수정: 저는 arivanandan/discourse-embed-complete: Includes first post while embedding discourse 플러그인을 사용 중이었습니다 :slightly_smiling_face:

여러 주제의 댓글을 하나의 페이지에 모두 포함하고 싶은 경우 어떻게 해야 하나요?

1개의 좋아요