From b8715b0cf2a4a371c45703704da9d8232f6cf907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Corn=C3=A9=20Haasjes?= Date: Tue, 1 Apr 2025 19:38:31 +0200 Subject: Add support for hooks in layouts/partials/hooks Supported hooks: - head_start - head_end - body_end - footer_start --- layouts/_default/baseof.html | 2 ++ layouts/partials/footer.html | 3 +++ layouts/partials/functions/get_hook.html | 23 +++++++++++++++++++++++ layouts/partials/head.html | 5 +++++ 4 files changed, 33 insertions(+) create mode 100644 layouts/partials/functions/get_hook.html diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 7a5579d..4ff7215 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -32,6 +32,8 @@ {{ partialCached "math.html" . }} {{ end }} + {{/* Body end hook */}} + {{ partial "functions/get_hook.html" (dict "hook" "body_end" "context" .) }} diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 579e50a..cb20f6f 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -1,5 +1,8 @@ {{ $showFooter := default true .Site.Params.showFooter }} {{ if $showFooter }} + {{/* Footer start hook */}} + {{ partial "functions/get_hook.html" (dict "hook" "footer_start" "context" .) }} + {{ if not .Site.Params.footerContent }}

Powered by Hugo diff --git a/layouts/partials/functions/get_hook.html b/layouts/partials/functions/get_hook.html new file mode 100644 index 0000000..79c9987 --- /dev/null +++ b/layouts/partials/functions/get_hook.html @@ -0,0 +1,23 @@ +{{/* + Customize layouts without overwriting files. + Hooks should be defined in the layouts/partials/hooks directory. + + Parameters: + - hook: The name of the hook to be used. + - context: The context to be passed to the partial. +*/}} + +{{ $hook := .hook }} +{{ $context := .context }} +{{ $hookName := $hook.Name }} +{{ $hookType := $hook.Type }} + +{{ if not (hasSuffix $hook ".html") }} + {{ $hook = printf "%s.html" $hook }} +{{ end }} + +{{ $hook_path := path.Join "layouts/partials/hooks" $hook }} + +{{ if fileExists $hook_path }} + {{ partial $hook_path $context }} +{{ end }} \ No newline at end of file diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 5eea693..f62f983 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -1,6 +1,9 @@ +{{/* Head start hook */}} +{{ partial "functions/get_hook.html" (dict "hook" "head_start" "context" .) }} + {{ $faviconPath := (.Site.Params.faviconPath | default "" | absURL) }} @@ -46,3 +49,5 @@ {{ end }} {{ end }} +{{/* Head end hook */}} +{{ partial "functions/get_hook.html" (dict "hook" "head_end" "context" .) }} -- cgit v1.2.3