Serve Markdown when requested (#2181)

* Add support for rendering each page as md

* On md pages, change relative links to go to md version

* Netlify: respond with md if accept header equals text/markdown

* Render shortcodes

* Remove netlify accept header functionality
This commit is contained in:
Abdon Pijpelink
2026-03-04 14:09:05 +01:00
committed by GitHub
parent 96e837001a
commit 0725a70f05
5 changed files with 80 additions and 0 deletions
+14
View File
@@ -116,6 +116,20 @@ disableKinds = ["taxonomy", "term"]
environment = '{production}'
path = '{**.skip,**.skip/*}'
[mediaTypes."text/markdown"]
suffixes = ["md"]
[outputFormats.Markdown]
mediaType = "text/markdown"
isPlainText = true
isHTML = false
rel = "alternate"
[outputs]
page = ["HTML", "Markdown"]
section = ["HTML", "RSS", "Markdown"]
home = ["HTML", "RSS"]
[services]
[services.googleAnalytics]
id = 'G-NZYW2651NE'
@@ -0,0 +1,8 @@
# {{ .Title }}
{{- $content := .RenderShortcodes -}}
{{- /* Rewrite internal absolute links: ](/path/to/page/) → ](/path/to/page/index.md) */}}
{{- $content = replaceRE `\]\((/[^):]*/)` `](${1}index.md` $content -}}
{{- /* Rewrite internal relative links: ](../page/) or (./page/) → same with index.md */}}
{{- $content = replaceRE `\]\((\.\.?/[^):]*/)` `](${1}index.md` $content -}}
{{ $content }}
@@ -0,0 +1,8 @@
# {{ .Title }}
{{- $content := .RenderShortcodes -}}
{{- /* Rewrite internal absolute links: ](/path/to/page/) → ](/path/to/page/index.md) */}}
{{- $content = replaceRE `\]\((/[^):]*/)` `](${1}index.md` $content -}}
{{- /* Rewrite internal relative links: ](../page/) or (./page/) → same with index.md */}}
{{- $content = replaceRE `\]\((\.\.?/[^):]*/)` `](${1}index.md` $content -}}
{{ $content }}
@@ -0,0 +1,49 @@
{{- $path := .Get "path" -}}
{{- $order := .Get "order" -}}
{{- $block := .Get "block" -}}
{{- if $order -}}
{{- $order = split $order " " -}}
{{- else -}}
{{- $order = slice -}}
{{- $currentPath := $path -}}
{{- $currentPathParts := split $currentPath "/" -}}
{{- $numParts := len $currentPathParts -}}
{{- range seq $numParts -}}
{{- $index := sub $numParts . -}}
{{- $currentPath = delimit (first (add $index 1) $currentPathParts) "/" -}}
{{- $sectionPage := $.Site.GetPage "section" $currentPath -}}
{{- if and $sectionPage $sectionPage.Params.snippetsOrder -}}
{{- $order = $sectionPage.Params.snippetsOrder -}}
{{- break -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- $files := dict -}}
{{- range $dir := slice (printf "content/%s" $path) (printf "content/%s/generated/%s" $path $block) -}}
{{- if not (fileExists $dir) -}}
{{- continue -}}
{{- end -}}
{{- range (readDir $dir) -}}
{{- if or (strings.HasPrefix .Name "_") (not (strings.HasSuffix .Name ".md")) -}}
{{- continue -}}
{{- end -}}
{{- $filePath := printf "%s/%s" $dir .Name -}}
{{- $content := readFile $filePath -}}
{{- $files = merge $files (dict (strings.TrimSuffix ".md" .Name) $content) -}}
{{- end -}}
{{- end -}}
{{- range $order -}}
{{- $snippet := index $files . -}}
{{- if $snippet }}
{{ $snippet }}
{{- end -}}
{{- end -}}
{{- range $name, $content := $files -}}
{{- if not (in $order $name) }}
{{ $content }}
{{- end -}}
{{- end -}}
@@ -0,0 +1 @@
{{- readFile (.Get 0) -}}