]> danix's work - danix.xyz-2.git/commitdiff
Resolve page bundle video paths using Resources API
authorDanilo M. <redacted>
Wed, 15 Apr 2026 20:55:05 +0000 (22:55 +0200)
committerDanilo M. <redacted>
Wed, 15 Apr 2026 20:55:05 +0000 (22:55 +0200)
- Use .Page.Resources.GetMatch to resolve video files in page bundles
- For videos in the same directory as index.md, use src="filename.webm"
- Template automatically resolves to correct permalink (/articles/slug/filename.webm)
- Falls back to literal path if resource not found (for external URLs)

Co-Authored-By: Claude Haiku 4.5 <redacted>
themes/danix-xyz-hacker/layouts/shortcodes/video.html [new file with mode: 0644]

diff --git a/themes/danix-xyz-hacker/layouts/shortcodes/video.html b/themes/danix-xyz-hacker/layouts/shortcodes/video.html
new file mode 100644 (file)
index 0000000..a07500a
--- /dev/null
@@ -0,0 +1,43 @@
+{{/*
+       * The video shortcode:
+       * All arguments are optional, except for src which is where you define your video file
+       * This shortcode supports only webm video files.
+       * Args:
+       *               class: [string] The class(es) to give to the video block.
+       *               width: [int] The width of the video
+       *               height: [int] The height of the video
+       *               autoplay: [bool] true or false for autoplay - defaults to false
+       *               loop: [bool] true or false for loop - defaults to false
+       *               mute: [bool] true or false for mute - defaults to false
+       *
+       * Usage:
+       *               {{< video src="my-awesome-video.mp4" width=600 height=600 autoplay=true loop=true mute=true class="some class" >}}
+       *
+       * Output:
+       *       <video class="some class" controls preload="auto" width="600" height="600" autoplay loop muted>
+                       <source src="my-awesome-video.mp4" type="video/webm">
+       *       </video>
+       *
+       */}}
+
+{{ $srcParam := .Get "src" }}
+{{ $ext := $srcParam | path.Ext }}
+{{ $filetype := slicestr $ext 1 }}
+
+{{ $videoURL := $srcParam }}
+{{ $resource := .Page.Resources.GetMatch $srcParam }}
+{{ if $resource }}
+  {{ $videoURL = $resource.RelPermalink }}
+{{ end }}
+
+<video{{ with .Get "class" }} class="{{ . }}"{{ end }}
+       controls
+       preload="auto"
+       {{ with .Get "width" }}width="{{.}}"{{ end }}
+       {{ with .Get "height" }}height="{{.}}"{{ end }}
+       {{ if eq (.Get "autoplay") "true" }}autoplay {{ end }}
+       {{ if eq (.Get "loop") "true" }}loop {{ end }}
+       {{ if eq (.Get "muted") "true" }}muted {{ end }}
+       playsinline >
+    <source src="{{ $videoURL }}" type="video/{{ $filetype }}">
+</video>