Files
blowfish/layouts/_default/_markup/render-image.html
2025-05-25 23:29:48 +08:00

51 lines
1.8 KiB
HTML

{{ define "inline-image-simple" -}}
<img class="my-0 rounded-md" loading="lazy" alt="{{ .alt }}" src="{{ .src }}" />
{{- end }}
{{ define "inline-image-responsive" -}}
<img
class="my-0 rounded-md" loading="lazy" decoding="async" fetchpriority="low" alt="{{ .alt }}"
srcset="
{{ (.resource.Resize "330x").RelPermalink }} 330w,
{{ (.resource.Resize "660x").RelPermalink }} 660w,
{{ (.resource.Resize "1280x").RelPermalink }} 1280w"
data-zoom-src="{{ .resource.RelPermalink }}"
src="{{ .resource.RelPermalink }}"
/>
{{- end }}
{{ define "inline-image-caption" -}}
{{- with .caption }}
<figcaption>{{ . | markdownify }}</figcaption>
{{- end }}
{{- end }}
{{- $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
{{- $url := urls.Parse .Destination }}
{{- $altText := .Text }}
{{- $caption := .Title }}
{{- $isRemote := findRE "^https?" $url.Scheme }}
{{- $resource := "" }}
{{- if not $isRemote }}
{{- $resource = or ($.Page.Resources.GetMatch $url.String) (resources.Get $url.String) }}
{{- end }}
<figure>
{{- if $isRemote }}
{{ template "inline-image-simple" (dict "src" $url.String "alt" $altText) }}
{{- else if $resource }}
{{- $isSVG := eq $resource.MediaType.SubType "svg" }}
{{- $shouldOptimize := and (not $disableImageOptimization) (not $isSVG) }}
{{- if $shouldOptimize }}
{{ template "inline-image-responsive" (dict "resource" $resource "alt" $altText) }}
{{- else }}
{{ template "inline-image-simple" (dict "src" $resource.RelPermalink "alt" $altText) }}
{{- end }}
{{- else }}
{{ template "inline-image-simple" (dict "src" $url.String "alt" $altText) }}
{{- end }}
{{ template "inline-image-caption" (dict "caption" $caption) }}
</figure>