Обработка якорей в постах, созданных с помощью Markdown

Привет, добро пожаловать!

Этот синтаксис из kramdown или PHP Markdown Extra?

Discourse использует MarkdownIt, который основан на спецификации CommonMark. Он не поддерживает указание идентификатора заголовка.

Кажется, что этот вопрос обсуждался ранее: Anchors in markdown - Spec - CommonMark Discussion, но я не вижу какого-либо окончательного вывода.

Однако Discourse автоматически генерирует якоря.
Вы можете увидеть это здесь:

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

В целом, вы можете ожидать следующие идентификаторы:

  • h-{headingId} (без ID поста, без слага)
  • h-{slug}-{headingId} (без ID поста)
  • p-{postId}-h-{headingId} (с ID поста, без слага)
  • p-{postId}-h-{slug}-{headingId} (с ID поста и слагом)

Например:

Если вы предпочитаете, вы все еще можете создать якорь вручную с помощью HTML, например, <a name="anchor_name"></a>


Дополнительные ресурсы —
Если вам нужно сгенерировать оглавление, для вас есть этот компонент: