Gestion des ancres dans les publications créées avec markdown

Salut la communauté, j’utilise un site discourse pour publier certaines spécifications qui sont principalement écrites en markdown, mais j’ai rencontré le problème que les ancres utilisées pour les en-têtes sont rendues, alors qu’elles devraient être masquées.

Quelqu’un sait-il s’il existe un moyen de les masquer ?

2 « J'aime »

Salut, bienvenue !

Cette syntaxe provient-elle de kramdown ou de PHP Markdown Extra ?

Discourse s’appuie sur MarkdownIt, qui est basé sur la spécification CommonMark. Il ne prend pas en charge la spécification d’un ID d’en-tête.

Il semble qu’ils en aient discuté à un moment donné : Anchors in markdown - Spec - CommonMark Discussion, mais je ne vois pas de conclusion définitive.

Cependant, Discourse génère automatiquement des ancres.
Vous pouvez le voir ici :

Essentiellement, vous pouvez vous attendre à ces ID :

  • h-{headingId} (pas d’ID de publication, pas de slug)
  • h-{slug}-{headingId} (pas d’ID de publication)
  • p-{postId}-h-{headingId} (ID de publication, pas de slug)
  • p-{postId}-h-{slug}-{headingId} (ID de publication, slug)

Par exemple :

Si vous préférez, vous pouvez toujours créer une ancre manuellement avec HTML, par exemple, <a name="anchor_name"></a>


Ressources supplémentaires –
Si vous avez besoin de générer une Table des matières, il existe ce composant pour vous :

5 « J'aime »

Merci beaucoup @Arkshine !

Le problème vient plutôt du fait que nous publions également les markdowns utilisés pour d’autres raisons sur Discourse, de sorte que les personnes qui maintiennent les documents utilisent ces ancres pour des références croisées lors de la fusion de plusieurs markdowns en un seul document.

Je pense que je vais créer une sorte de script pour nettoyer avant de publier le contenu.

3 « J'aime »

Je vois !

La solution consiste également à créer un plugin pour Discourse avec un plugin markdown pour prendre en charge cette syntaxe. Si vous avez un budget, vous pourriez demander sur Marketplace.

@Nihokam

Si vous êtes toujours intéressé, j’ai créé un petit plugin Discourse qui permet de spécifier un ID d’ancre à côté de l’en-tête.

Il fonctionne en parallèle des ancres automatiques d’en-tête de Discourse.
Notez qu’il s’agit d’un support basique. Il existe probablement de nombreuses variantes, mais ce plugin ne prend en charge que les suivantes :

## Mon En-tête {#ancre_personnalisee}

générera :

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

Vous pouvez essayer ! Faites-moi savoir si vous rencontrez des problèmes avec.

2 « J'aime »

Merci @Arkshine !

Je vais vérifier avec notre administrateur discourse à ce sujet :grin:

1 « J'aime »

@Arkshine Savez-vous comment les ancres sont générées dans Discourse (le site web actuel) ? Je demande car elles ne semblent pas suivre les modèles que vous avez partagés. Par exemple, regardez ceci :

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

Y a-t-il un paramètre pour cela ? Je n’ai pas pu le trouver. Ou utilisent-ils <a> ? Ou votre plugin ?