summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorné Haasjes <c.haasjes@lumc.nl>2025-04-01 19:38:31 +0200
committerCorné Haasjes <c.haasjes@lumc.nl>2025-04-01 19:38:31 +0200
commitb8715b0cf2a4a371c45703704da9d8232f6cf907 (patch)
treee92b292c8ba5a1d55bf2918bbedc4c9698ebd796
parent9794243a3ff85aae024d6a8f7439702cc66f3f73 (diff)
Add support for hooks in layouts/partials/hooks
Supported hooks: - head_start - head_end - body_end - footer_start
-rw-r--r--layouts/_default/baseof.html2
-rw-r--r--layouts/partials/footer.html3
-rw-r--r--layouts/partials/functions/get_hook.html23
-rw-r--r--layouts/partials/head.html5
4 files changed, 33 insertions, 0 deletions
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" .) }}
</body>
<script src="{{ "js/theme-switch.js" | relURL }}"></script>
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 }}
<p>Powered by
<a href="https://gohugo.io/">Hugo</a>
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 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
+{{/* Head start hook */}}
+{{ partial "functions/get_hook.html" (dict "hook" "head_start" "context" .) }}
+
{{ $faviconPath := (.Site.Params.faviconPath | default "" | absURL) }}
<link rel="icon" type="image/ico" href="{{ $faviconPath }}/favicon.ico">
@@ -46,3 +49,5 @@
{{ end }}
{{ end }}
+{{/* Head end hook */}}
+{{ partial "functions/get_hook.html" (dict "hook" "head_end" "context" .) }}