마크다운으로 작성한 게시글에서 앵커 처리하기

커뮤니티 여러분, 저는 마크다운으로 작성된 스펙을 게시하기 위해 디스커스 사이트를 사용하고 있습니다. 그런데 헤더에 사용되는 앵커가 숨겨져야 하는데도 불구하고 화면에 표시되는 문제를 겪고 있습니다.

이것을 숨기는 방법이 있는지 아시는 분이 있을까요?

안녕하세요, 오신 것을 환영합니다!

이 구문은 kramdown에서 나온 것인가요, 아니면 PHP Markdown Extra에서 나온 것인가요?

Discourse는 CommonMark 사양을 기반으로 한 MarkdownIt에 의존합니다. 헤더 ID를 지정하는 기능은 지원하지 않습니다.

언젠가 이에 대해 논의된 것 같습니다: Anchors in markdown - Spec - CommonMark Discussion, 하지만 명확한 결론을 찾지 못했습니다.

다만, Discourse는 자동으로 앵커를 생성합니다.
여기서 확인해 볼 수 있습니다:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse-markdown-it/src/features/anchor.js

결론적으로, 다음과 같은 ID를 기대할 수 있습니다:

  • h-{headingId} (게시물 ID 없음, 슬러그 없음)
  • h-{slug}-{headingId} (게시물 ID 없음)
  • p-{postId}-h-{headingId} (게시물 ID 있음, 슬러그 없음)
  • p-{postId}-h-{slug}-{headingId} (게시물 ID, 슬러그 있음)

예시:

원하는 경우, HTML을 사용하여 수동으로 앵커를 만들 수도 있습니다. 예: <a name="anchor_name"></a>


추가 자료 –
목차를 생성해야 한다면 이 컴포넌트를 사용할 수 있습니다:

많이 감사합니다 @Arkshine!

이 문제는 다른 목적으로 사용된 마크다운 파일들을 디스코르스에도 게시하고 있기 때문에 발생하는 것이 더 큽니다. 문서 관리자들이 여러 마크다운 파일을 하나의 문서로 병합할 때 상호 참조를 위해 이러한 앵커를 사용하고 있기 때문입니다.

내용을 게시하기 전에 정리하는 스크립트를 만들어 볼 것 같습니다.

알겠습니다!

해결책은 이 구문을 지원하도록 마크다운 플러그인을 갖춘 Discourse 플러그인을 만드는 것입니다. 예산이 있으시다면 #marketplace에 요청해 보실 수 있습니다.

@Nihokam

여전히 관심이 있으시다면, 헤딩 옆에 앵커 ID를 지정하는 기능을 처리하는 작은 Discourse 플러그인을 만들었습니다.

이 플러그인은 Discourse의 자동 헤딩 앵커와 함께 작동합니다.
기본적인 지원만 제공한다는 점에 유의하세요. 다양한 변형이 많을 수 있지만, 이 플러그인은 다음 항목만 지원합니다:

## My Heading {#custom_section}

위 코드는 다음을 생성합니다:

<a name="custom_section" href="#custom_section" class="custom-anchor-id"></a>

한번 사용해 보세요! 문제가 있으시면 알려주세요.

감사합니다 @Arkshine!

저희 디스코urs 관리자에게 사용 가능 여부를 확인해 보겠습니다 :grin:

@Arkshine 현재 웹사이트인 디스코스의 앵커가 어떻게 생성되는지 아시나요? 공유해 주신 패턴을 따르지 않는 것 같아서 질문드립니다. 예를 들어, 이 링크를 참고해 주세요:

https://meta.discourse.org/t/adding-a-table-to-your-post-using-markdown/66544#creating-a-simple-table-1

이와 관련된 설정이 있나요? 찾아보았지만 발견하지 못했습니다. 아니면 <a> 태그를 사용하나요? 아니면 당신의 플러그인을 사용하나요?