# 임베드된 게시물의 텍스트를 커스터마이즈하는 방법?

**URL:** https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826
**Category:** Support
**Created:** [1월 14, 2022, 5:21오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826 "2022-01-14T05:21:45Z")
**Posts on this page:** 17
**Page:** 1

<div class="post-metadata">

### Author: ![KevinWorkman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kevinworkman/32/122364_2.png) [@KevinWorkman](https://meta.discourse.org/u/KevinWorkman)
#### Post date: [1월 14, 2022, 5:21오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/1 "2022-01-14T05:21:45Z")

</div>

다양한 튜토리얼과 블로그를 게시하는 사이트를 운영하고 있으며, Discourse를 포럼이자 임베딩 기능을 활용한 댓글 시스템으로 사용하고 있습니다.

대부분 잘 작동하지만, 메인 사이트에 새 페이지를 생성하면 Discourse 게시물에 모든 콘텐츠가 포함되는 문제가 있습니다. 일부 사용자는 메인 사이트의 존재조차 모르고 항상 포럼에서 전체 게시물을 읽습니다! 이는 Discourse에서 임베디드 코드 에디터와 같은 기능이 작동하지 않아 버그가 있는 것처럼 느껴지는 경험을 초래하므로 문제가 됩니다.

이상적인 상황이라면, Discourse 게시물은 메인 페이지의 원본 게시물로 돌아가는 짧고 명확한 링크만 포함되면 좋겠습니다. 다음과 같은 형태일 수 있습니다:

> 원본 게시물 보기:
> 
> [https://example.com](https://example.com)
> 
> 이 스레드에 대한 답변은 원본 게시물의 댓글로 표시됩니다!

[이 스레드](https://meta.discourse.org/t/turn-off-show-full-post-in-wp-discourse-plugin/50342)에 설명된 대로 `embed truncate` 설정을 비활성화해 보았지만, “전체 게시물 보기” 버튼은 숨겨지더라도 게시물에 모든 콘텐츠가 여전히 표시됩니다.

`embed.imported_from` 메시지를 편집해 보기도 했는데, 이는 이미 사용자들이 놓치고 있는 하단의 작은 텍스트만 변경할 뿐입니다.

Discourse가 게시물을 생성한 후 수동으로 편집해 보기도 했지만, 마크다운이 HTML로 렌더링되지 않고 일반 텍스트로 표시됩니다. 이 문제는 이 이슈와 유사해 보입니다: [Customizing the "Embedding" Behavior by Disabling Show Full Post?](https://meta.discourse.org/t/customizing-the-embedding-behavior-by-disabling-show-full-post/87085)

놓치고 있는 설정이 있거나, 자동 생성된 Discourse 게시물의 텍스트를 커스터마이징할 수 있는 다른 트릭이 있을까요? 메인 사이트의 HTML에 특정 내용을 포함시켜 Discourse가 올바른 내용을 표시하도록 유도할 수도 있을까요? 아니면 마크다운 렌더링 문제를 해결할 수만 있다면 수동으로 편집하는 것도 괜찮습니다.

도와주실 수 있는 모든 도움에 감사드립니다!

---

<div class="post-metadata">

### Author: ![KevinWorkman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kevinworkman/32/122364_2.png) [@KevinWorkman](https://meta.discourse.org/u/KevinWorkman)
#### Post date: [7월 7, 2022, 11:21오후 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/2 "2022-07-07T23:21:22Z")

</div>

리마인드해서 죄송하지만, 시도해 볼 만한 아이디어가 있으신 분이 계시다면 정말 감사하겠습니다!

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [7월 14, 2022, 12:32오후 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/3 "2022-07-14T12:32:02Z")

</div>

케이빈, [WP Discourse](https://github.com/discourse/wp-discourse) 플러그인을 사용 중인지, 아니면 [JavaScript 임베드](https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963)를 사용 중인지 확인하고 싶은데 가능할까?

---

<div class="post-metadata">

### Author: ![KevinWorkman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kevinworkman/32/122364_2.png) [@KevinWorkman](https://meta.discourse.org/u/KevinWorkman)
#### Post date: [7월 15, 2022, 2:48오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/4 "2022-07-15T02:48:37Z")

</div>

답변해 주셔서 감사합니다! 저는 JavaScript 임베드를 사용하고 있습니다. 예를 들어, 이 페이지가 있습니다:

> **[React CSS Tutorial](https://happycoding.io/tutorials/javascript/react-css)**
>
> Use CSS to style your React apps.

이 페이지에는 다음 임베드 코드가 포함되어 있습니다:

```plaintext
<script type="text/javascript">
DiscourseEmbed = { discourseUrl: location.protocol 
	+ '//forum.happycoding.io/',
	discourseEmbedUrl: location.protocol + '//happycoding.io/tutorials/javascript/react-css' };
	
(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>

```

이 코드는 제 Discourse에 이 게시물을 생성합니다:

[https://forum.happycoding.io/t/css-in-react/1092](https://forum.happycoding.io/t/css-in-react/1092)

링크를 클릭해 보시면, 해당 게시물에 원래 페이지의 전체 텍스트가 포함되어 있는 것을 확인하실 수 있습니다.

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [7월 15, 2022, 10:04오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/5 "2022-07-15T10:04:50Z")

</div>

설명해 주셔서 감사합니다.

Discourse에서 `embed truncate` 사이트 설정을 활성화해 두신 이유가 무엇인가요? 비활성화했다고 말씀하시면서도, 동시에 문제가 되는 부분이

> [@KevinWorkman](#):
>
> 대부분은 잘 작동하지만, 메인 사이트에서 새 페이지를 만들면 모든 콘텐츠가 Discourse 게시물에 포함됩니다. 일부 사용자는 메인 사이트의 존재조차 모릅니다. 항상 포럼에서 게시물의 전체 내용을 읽기 때문이죠. 이는 Discourse에서 내장된 코드 에디터와 같은 기능이 작동하지 않으므로 버그가 있는 것처럼 보이는 경험을 만들어내는 문제가 됩니다.

이라고 말씀하고 계셔서 조금 혼란스럽습니다.

`embed truncate` 설정은 바로 이러한 이유 때문에 존재합니다. 이 설정이 있으면 사용자는 Discourse 자체에서 게시물의 일부 발췌만 볼 수 있습니다.

구체적으로 어떤 사용자 행동을 방지하려 하고, 어떤 사용자 행동을 장려하려 하는지 조금 더 자세히 설명해 주실 수 있을까요?

---

<div class="post-metadata">

### Author: ![KevinWorkman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kevinworkman/32/122364_2.png) [@KevinWorkman](https://meta.discourse.org/u/KevinWorkman)
#### Post date: [7월 16, 2022, 10:22오후 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/6 "2022-07-16T22:22:26Z")

</div>

> [@angus](#):
>
> Discourse에서 `embed truncate` 사이트 설정을 활성화한 이유는 무엇인가요?

저는 `embed truncate` 설정을 두고 고민해 왔습니다. 다시 살펴보니 활성화하는 것이 약간 더 나을 것 같지만, 여전히 Discourse에서 원래 기사의 전체 텍스트를 아예 표시하지 않는 방법을 찾고 있습니다. 다시 말해, 전체 텍스트를 버튼 클릭 뒤에 숨기는 것이 아니라, 전체 텍스트를 전혀 표시하지 않고 원래 기사로만 링크를 걸고 싶습니다.

> [@angus](#):
>
> 어떤 특정 사용자 행동을 피하려 하고, 어떤 특정 사용자 행동을 장려하려 하는지 조금 더 설명해 주실 수 있을까요?

제가 피하려는 행동은 사용자가 Discourse에 와서 원래 페이지가 아닌 Discourse에서 기사를 통째로 읽는 것입니다. 이는 문제가 됩니다. Discourse의 전체 텍스트에는 종종 버그(인터랙티브 JS, 임베드된 코드 등)가 포함되어 있기 때문입니다. 그 결과 버그 보고가 들어오는데, 해결책은 Discourse에서 읽는 것을 멈추고 “실제” 사이트로 가서 읽으라는 것이 됩니다.

즉, 제가 장려하려는 사용자 행동은 Discourse 게시물에서가 아니라 원래 페이지에서 기사를 통째로 읽는 것입니다.

이것이 사소한 문제로 보일 수 있습니다(전체적인 관점에서는 실제로 사소합니다) 하지만, 제 걱정은 사용자가 제 Discourse에 와서 페이지의 동작이 버그 있는 것으로 생각하고, “실제” 사이트에는 Discourse 대신 읽어야 할 페이지가 있다는 것을 깨닫기 전에 이탈해 버리는 것입니다.

고려해 본 몇 가지 가능한 옵션:

- Discourse에 원래 게시물의 일부도 포함하지 않고 링크만 포함하도록 지시하는 설정이 있나요?
- 제 원래 HTML에 기사를 Discourse 게시물에 포함(또는 제외)할 부분을 나타내는 CSS 클래스나 기타 속성을 추가할 수 있나요?
- 아마도 Discourse에 커스텀 CSS를 추가하여 `Show Full Post...` 버튼을 숨길 수 있을까요?

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [7월 18, 2022, 7:20오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/7 "2022-07-18T07:20:37Z")

</div>

설명해 주셔서 감사합니다, Kevin. 이 문제에 대해 특별히 지정된 설정은 없지만, 다음과 같은 두 가지 방법으로 접근할 수 있습니다.

#### 사이트에서 가져올 HTML 커스터마이징

임베드는 [Readability](https://github.com/cantino/ruby-readability) 지엠을 사용하여 사이트의 콘텐츠를 스크래핑하는 방식으로 작동합니다. 해당 지엠과 그 출력은 스크래핑할 HTML을 필터링하기 위해 다음 옵션을 사용합니다.

```plaintext
opts[:whitelist] = SiteSetting.allowed_embed_selectors if SiteSetting.allowed_embed_selectors.present?
opts[:blacklist] = SiteSetting.blocked_embed_selectors if SiteSetting.blocked_embed_selectors.present?
allowed_embed_classnames = SiteSetting.allowed_embed_classnames if SiteSetting.allowed_embed_classnames.present?

```

따라서 사이트 설정인 `allowed_embed_selectors`, `blocked_embed_selectors`, 또는 `allowed_embed_classnames`를 설정하여 HTML에서 가져와 Discourse 게시물에 표시되는 콘텐츠를 제한할 수 있습니다. 예를 들어, 존재하지 않는 클래스로 제한하여 콘텐츠가 전혀 가져오지 않도록 할 수 있습니다.

사이트에서 스크래핑된 콘텐츠에는 다음 HTML이 추가됩니다:

```plaintext
"\n<hr>\n<small>#{I18n.t('embed.imported_from', link: "<a href='#{url}'>#{url}</a>")}</small>\n"

```

따라서 관리 패널에서 `embed.imported_from` 텍스트를 커스터마이징하여 사용자가 블로그에서 콘텐츠를 읽도록 안내하면 됩니다. 해당 텍스트에서 콘텐츠 링크를 보간할 수 있으며, 예를 들어 로케일 텍스트의 영어 버전은 다음과 같습니다.

```plaintext
This is a companion discussion topic for the original entry at %{link}

```

#### 전체 게시물 보기 버튼 숨기기

제안하신 대로, CSS를 사용하여 전체 게시물 보기 버튼을 숨기면 이 방법도 작동합니다.

---

<div class="post-metadata">

### Author: ![sutterseba](https://avatars.discourse-cdn.com/v4/letter/s/ac8455/32.png) [@sutterseba](https://meta.discourse.org/u/sutterseba)
#### Post date: [5월 18, 2024, 10:44오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/8 "2024-05-18T10:44:25Z")

</div>

완전한 임베드 텍스트를 커스터마이징할 수 있는 옵션이 왜 없는지 이해하기 어렵습니다. 임베드된 URL에서 실제 콘텐츠를 스크래핑하는 대신, 짧은 설명(예: 메타 요약만)과 함께 링크만 표시되기를 원합니다.

현재는 자동화된 API 호출로 이렇게 하고 있지만, 네이티브 임베딩 기능으로 전환하고 싶습니다.

스크래핑 대상 사이트에 Discourse가 해당 단일 요소만 스크래핑하도록 숨겨진 요소를 만들어 보았지만, 단점은 링크에 원박스(Onebox)가 표시되지 않는다는 것입니다.

> [@angus](#):
>
> 존재하지 않는 클래스로 제한하여 콘텐츠가 가져오지지 않도록 할 수 있습니다

`embed.imported_from`을 커스터마이징하는 것도 한계가 있습니다. 항상 `<small>` 태그로 강제 적용되어 실제 커스터마이징이 불가능하기 때문입니다.

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [5월 20, 2024, 6:25오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/9 "2024-05-20T06:25:20Z")

</div>

> [@sutterseba](#):
>
> 완전한 임베드 텍스트를 사용자 지정할 수 있는 옵션이 없는 이유를 이해하기 어렵습니다. 임베드된 URL에서 실제 콘텐츠를 스크래핑하는 대신, 짧은 설명(예: 메타 서머리만)과 함께 해당 URL에 대한 링크만 표시하고 싶습니다.

말씀하신 내용은 임베드가 아닌 것 같습니다. 임베드는 본질적으로 다른 곳의 콘텐츠를 "삽입(embedding)"하는 것이기 때문입니다.

> [@sutterseba](#):
>
> 현재는 자동화된 API 호출로 이렇게 하고 있지만, 네이티브 임베드 기능으로 전환하고 싶습니다.

왜 전환하고 싶으신가요?

---

<div class="post-metadata">

### Author: ![sutterseba](https://avatars.discourse-cdn.com/v4/letter/s/ac8455/32.png) [@sutterseba](https://meta.discourse.org/u/sutterseba)
#### Post date: [5월 20, 2024, 8:26오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/10 "2024-05-20T08:26:50Z")

</div>

> [@angus](#):
>
> 임베드가 필요하지 않은 것 같네요.

맞아요, 저는 새로운 블로그 글이 게시될 때마다 자동으로 스레드가 생성되는 것만 원합니다.

다만, 외부 웹사이트에서 블로그 게시물 아래에 댓글을 표시하기 위해 네이티브 JS 임베드 기능을 사용하길 원합니다. 이 경우 포럼의 임베딩 동작도 함께 제공됩니다.

현재의 자동화에는 약간의 지연(실시간 아님)이 있으며, 새로운 글이 게시될 때마다 CMS에서 자동 스레드 생성을 구현하는 것은 다소 어렵습니다. 단순히 블로그 CMS가 아니기 때문에, 심지어 구분된 “게시” 이벤트조차 없거든요.

어쨌든, 스레드를 생성하려는 JS 임베드와 제 자동화 사이에 충돌이 발생할 것입니다. 전자(JS 임베드)가 대부분의 경우 더 빠를 가능성이 높습니다. 그래서 저는 JS 임베드 기능만 사용하도록 "전환"하고 싶습니다. 단, 이 경우 매번 스레드를 수동으로 편집해야 한다는 단점이 있습니다.

제안이 있다면 기꺼이 듣고 싶습니다! 😄

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [5월 20, 2024, 9:41오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/11 "2024-05-20T09:41:21Z")

</div>

설명해 주셔서 감사합니다.

제가 잘 이해하고 있다면:

1. [JS 임베드](https://meta.discourse.org/t/embed-discourse-comments-on-another-website-via-javascript/31963)의 주제 생성 및 댓글 연결 기능을 원하시고,
2. 연결된 Discourse 주제의 첫 번째 게시물에는 짧은 설명과 함께 링크만 표시되길 원하시는 것이 맞나요?

맞는지 확인해 주세요. 2번의 경우 `embed truncate` 사이트 설정을 사용해 보셨나요? 사용하셨다면, 그 설정 중 어떤 부분이 마음에 들지 않으셨나요? 첫 번째 답변에서 이에 대해 약간 언급하신 것 같지만, 정확히 어떤 부분에서 어려움을 겪고 계신지 구체적으로 설명해 주실 수 있을까요? 원하시는 결과를 달성하는 데 걸림돌이 되는 것이 무엇인지, 그리고 그 원하시는 결과가 정확히 무엇인지 예를 들어 설명해 주시면 좋겠습니다.

---

<div class="post-metadata">

### Author: ![sutterseba](https://avatars.discourse-cdn.com/v4/letter/s/ac8455/32.png) [@sutterseba](https://meta.discourse.org/u/sutterseba)
#### Post date: [5월 20, 2024, 10:47오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/12 "2024-05-20T10:47:32Z")

</div>

> [@angus](#):
>
> 제가 올바르게 이해했다면

네, 맞습니다.

문제는 링크 원박스(Onebox)에 있으며, 임베드 콘텐츠가 항상 HTML 태그로 감싸지기 때문에 표시되지 않습니다. 😃

이것이 사소한 문제처럼 들릴 수 있다는 것(실제로도 그렇긴 합니다)을 알지만, 각 게시물마다 이 부분을 수동으로 편집해야 하는 것은 삶의 질 측면에서 상당한 단점이며, 저는 오랫동안 이를 수정하고 싶었습니다.

제가 원하는 모습은 다음과 같습니다(예시 디스코urs 블로그 게시물 사용):

 ![Screenshot 2024-05-20 at 12.29.45](https://global.discourse-cdn.com/meta/original/4X/0/a/e/0ae88330f0a9dc8f5099ea4448e75f26db815855.png)

현재로서는 URL과 요약을 특정하여 스크레이핑할 수 있도록 웹사이트에서 숨겨진 요소들을 다뤄야 하며, 그렇게 하더라도 원박스가 표시되지 않는다는 문제가 여전히 남아 있습니다. 제가 거의 완전히 커스터마이즈할 수 있는 유일한 부분은 하단의 “Read the full blog post…” 부분입니다.

제가 요청하는 것은 JS 스니펫에 다음과 같은 것을 추가할 수 있는 기능인 것 같습니다:

```plaintext
DiscourseEmbed = {
    discourseUrl: 'https://forum.example.com/',
    discourseEmbedUrl: 'https://blog.discourse.org/2024/03/a-warm-welcome-to-spiceworks',
    discourseRaw: 'https://blog.discourse.org/2024/03/a-warm-welcome-to-spiceworks\n\nWe are thrilled to share the move of the Spiceworks community to Discourse! The Spiceworks team has worked closely with our migration team\n\n<small>Read the full blog post on <a href="https://blog.discourse.org/2024/03/a-warm-welcome-to-spiceworks/">discourse.org</a>. This post has been created automatically and replies will be shown on the website.</small>'
};

```

`discourseEmbedRaw`는 /posts.json에 대한 일반 API 요청에서 `raw` 값과 동일한 역할을 합니다.

하지만 이것이 가장자리 사례(에지 케이스) 요구사항일 수 있으며 대부분의 사용자에게는 관련이 없을 수 있다는 점을 이해합니다. JS 스니펫이 작업을 시도하기 _이전_에 API를 통해 토픽을 생성하는 방식으로 이 문제를 해결해 보겠습니다.

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [5월 20, 2024, 11:54오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/13 "2024-05-20T11:54:26Z")

</div>

> [@sutterseba](#):
>
> JS 스니펫이 시도하기 _전에_ API를 통해 주제를 생성하는 방식으로 이 문제를 해결해 보겠습니다.

그렇게 하지는 않는 것을 권합니다.

> [@sutterseba](#):
>
> discourseEmbedRaw

이것은 여러 문제를 일으킬 수 있습니다. 일단 이 부분은 제쳐두겠습니다.

모든 것에 대한 완전한 제어권을 갖고 싶다는 점에 공감합니다. 하지만 현재 시스템에서 실현 가능한 개선 사항으로您的需求를 번역해 보려고 하니 조금만 기다려 주세요. 참고로 이것들은 단순한 제안이며, Discourse 팀이 어떤 것을 수용할지 결정하는 데에는 제 권한이 없습니다.

Discourse의 임베드된 게시물은 기본적으로 두 가지로 구성됩니다.

1. “imported from” HTML(즉, 링크)
2. 링크된 페이지의 HTML 콘텐츠(전체 또는 절단됨).

### 1. “imported from” HTML에 대한 제어

현재 이 HTML은 다음과 같이 하드코딩되어 있습니다.

```plaintext
 "\n<hr>\n<small>#{I18n.t("embed.imported_from", link: "<a href='#{url}'>#{url}</a>")}</small>\n"

```

예를 들어, 이것이 원박스(onebox) 처리되도록 URL만 표시되도록 커스터마이징하고 싶으실 것입니다. 여기에 실현 가능한 개선 사항은 관리자가 어딘가에 HTML을 입력해야 할 필요 없이, 이 부분을 "URL만"으로 전환하는 사이트 설정을 추가하는 것입니다.

### 2. 절단된 HTML 콘텐츠에 대한 제어

이미 이것을 수행할 수 있습니다. 사이트 설정의 `allowed embed classnames`를 사이트에서 원하는 발췌문을 감싸기 위해 사용한 요소의 클래스명으로 설정하면 됩니다. 예:

#### Discourse에서

다음 사이트 설정을 설정하십시오:

- `embed truncate`를 false로 설정
- `allowed embed classnames`를 "discourse-excerpt"로 설정

#### 블로그 페이지에서

```plaintext
<div class="discourse-excerpt">
We are thrilled to share the move of the Spiceworks community to Discourse! The Spiceworks team has worked closely with our migration team
</div>

```

### 3. “import from” HTML과 HTML 콘텐츠의 순서에 대한 제어

제 이해가 맞다면, “imported from” 부분(예: URL만)이 HTML 콘텐츠(또는 절단된 콘텐츠) 앞에 오希도록 원하시는 것입니다. 다시 말하지만, 이것을 수행하는 가장 간단한 방법은 `embed imported from above content`와 같은 불리언 사이트 설정을 추가하는 것입니다.

즉, 제 이해가 맞다면 `TopicEmbed` 클래스의 일부 작은 조정과 두 개의 새로운 불리언 설정 추가를 통해 이 것을 달성할 수 있습니다. 처리가 그곳에서 이루어져야 하므로, 이 모든 변경 사항은 `discourse/discourse` 자체에 적용된다는 점을 알아두시기 바랍니다.

위에서 언급했듯이, 이것은 제가 원하는 것을 달성하기 위해 어떻게 할지에 대한 단순한 제안입니다. 이것이나 유사한 것이 실행되려면 Discourse 팀의 동의(by-in)가 필요합니다.

---

<div class="post-metadata">

### Author: ![sutterseba](https://avatars.discourse-cdn.com/v4/letter/s/ac8455/32.png) [@sutterseba](https://meta.discourse.org/u/sutterseba)
#### Post date: [5월 20, 2024, 12:36오후 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/14 "2024-05-20T12:36:19Z")

</div>

이 내용을 정리해 주셔서 감사합니다! 👍

> [@angus](#):
>
> ### 잘린 HTML 콘텐츠에 대한 제어
> 
> 이미 이렇게 할 수 있습니다. 사이트 설정의 `allowed embed classnames`를 사이트에서 인용문을 감싸는 데 사용한 요소의 클래스 이름으로 설정하면 됩니다.

네, 바로 그것으로 실험을 해 봤습니다. 문제는 콘텐츠가 여러 개의 HTML 태그로 감싸져 있어 원박스(onebox)가 트리거되지 않는다는 점입니다. 원박스를 트리거하기 위해 URL을 `<br>` 태그로 분리해 보았지만, 그런 내용은 자동으로 잘리는 것 같습니다.

> [@angus](#):
>
> 그렇게 하는 것은 권장하지 않습니다.

음, 알겠습니다. 왜요? 🙂

물론 `embed_url` 값을 설정할 것입니다.

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [5월 20, 2024, 1:32오후 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/15 "2024-05-20T13:32:26Z")

</div>

> [@sutterseba](#):
>
> 문제는 콘텐츠가 여러 HTML 태그로 감싸져 있어서 원박스(onebox)가 트리거되지 않는다는 것입니다.

임베드 URL을 원박스로 만드는 것은 별개의 문제입니다. 제 예시처럼 텍스트 발췌만 설정하기 위해 `allowed embed classnames`를 사용하세요.

> [@sutterseba](#):
>
> 음, 알겠습니다. 왜죠? 🙂

실제로 `TopicEmbed` 파싱 문제인 것을 우회하려다 보니 바퀴를 다시 발명하는 셈이 되기 때문입니다. 또한 기대했던 순서대로 코드가 실행되지 않는 경우(예: 레이스 컨디션이나 다른 중간 예외 발생 등)와 같은 새로운 문제들이 발생할 수 있습니다. 외부 사이트의 코드와 [WP Discourse](https://github.com/discourse/wp-discourse) 플러그인이 혼합된 환경에서는 이러한 유형의 문제가 비교적 자주 발생합니다. 결론적으로, 그만한 가치가 없습니다.

코드베이스에 대해 잘 아시는 것 같습니다. 🙂 [이 클래스](https://github.com/discourse/discourse/blob/main/app/models/topic_embed.rb)에 두 가지 간단한 변경 사항을 적용하면 됩니다.

1. 여기서 사이트 설정으로 제어되는 조건문을 삽입하세요

> <https://github.com/discourse/discourse/blob/main/app/models/topic_embed.rb#L41>

1. 여기서도 사이트 설정으로 제어되는 조건문을 삽입하세요

> <https://github.com/discourse/discourse/blob/main/app/models/topic_embed.rb#L52>

discourse 앱을 빌드할 필요도 없습니다. 먼저 두 개의 rspec 테스트를 작성한 후, 변경 사항을 적용하고, 작동하는 것을 확인한 다음 PR을 올리면 됩니다. 🙂

---

<div class="post-metadata">

### Author: ![KevinWorkman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kevinworkman/32/122364_2.png) [@KevinWorkman](https://meta.discourse.org/u/KevinWorkman)
#### Post date: [5월 21, 2024, 4:19오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/16 "2024-05-21T04:19:46Z")

</div>

참고로, 최종적으로 이렇게 해결했습니다:

1. 블로그에는 `forum-excerpt`라는 id가 있는 `<div>`가 있으며, `display:none`으로 숨겨져 있지만 Discourse 게시물에 표시하고 싶은 HTML을 포함하고 있습니다. (Jekyll / Liquid 로직을 사용하여 이렇게 처리했지만, 이는 크게 중요하지 않습니다.)

2. Discourse에서 `임베드에서 허용되는 요소의 CSS 선택기`를 `#forum-excerpt`로 설정했습니다. 실제 페이지에서는 div가 숨겨져 있지만, 포럼에는 콘텐츠가 표시됩니다.

3. 또한 `임베드된 게시물 잘기` 옵션의 **체크를 해제** 했습니다.

4. `임베드된 CSS` 섹션에서 `.button`의 글꼴 크기를 키웠습니다. 작은 변경이지만, 댓글 추가 버튼의 크기가 더 커집니다.

5. `embed.continue`, `embed.start_discussion`, `embed.imported_from` 텍스트도 커스터마이징했는데, 이로 인해 제 웹사이트 댓글 섹션에 표시되는 내용이 변경됩니다.

이렇게 하면 포럼 게시물에 표시되는 HTML을 완전히 제어할 수 있습니다. 전달하는 HTML은 기본적으로 OneBox와 동등한 것으로, 큰 섬네일과 메인 게시물에 대한 링크입니다.

제 환경에서는 거의 완벽하게 작동합니다. 늦었지만 도움을 주셔서 감사합니다!

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [6월 20, 2024, 4:20오전 UTC](https://meta.discourse.org/t/how-to-customize-the-text-in-an-embedded-post/214826/17 "2024-06-20T04:20:12Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
