{{/* Partial: include.html Handles including external files (Markdown, YAML, etc.) and rendering or outputting them. */}} {{- $path := .path -}} {{- $context := .context -}} {{/* Map absolute paths to relative mount points */}} {{- $originalPath := $path -}} {{- $path = replace $path "/srv/docs/private/" "content/private/" -}} {{- $path = replace $path "/srv/configs/" "configs/" -}} {{- $path = strings.TrimLeft "/" $path -}} {{- $isMarkdown := strings.HasSuffix (lower $path) ".md" -}} {{- $p := "" -}} {{- $content := "" -}} {{- $found := false -}} {{/* 1. Try to find a Hugo Page if it's Markdown */}} {{- if $isMarkdown -}} {{- $variations := slice $path (replace $path "content/" "") (replace $path "private/" "") -}} {{- range $v := $variations -}} {{- if not $p }}{{ $p = $context.Site.GetPage $v }}{{ end -}} {{- if not $p }}{{ $p = $context.Site.GetPage (printf "/%s" $v) }}{{ end -}} {{- if not $p }}{{ $p = $context.Site.GetPage (strings.TrimSuffix ".md" $v) }}{{ end -}} {{- end -}} {{- end -}} {{- if $p -}} {{- $content = $p.Content -}} {{- $found = true -}} {{- else -}} {{/* 2. Fallback to readFile - check multiple path variations */}} {{- $pathsToTry := slice $path (printf "content/%s" $path) (printf "configs/%s" $path) -}} {{- range $v := $pathsToTry -}} {{- if and (not $found) (fileExists $v) -}} {{- $content = readFile $v -}} {{- $found = true -}} {{- end -}} {{- end -}} {{- end -}} {{- if $found -}} {{- if $isMarkdown -}} {{/* Strip frontmatter if it exists */}} {{- if (findRE "^---" $content) -}} {{- $content = replaceRE "^(?s)---.*?---[\\r\\n]*" "" $content -}} {{- end -}} {{- $context.RenderString $content -}} {{- else -}} {{/* Output raw content for non-markdown files */}} {{- $content | safeHTML -}} {{- end -}} {{- else -}} {{- warnf "Include file not found: %s" $originalPath -}}
[Include Error: File "{{ $originalPath }}" not found]
{{- end -}}