diff --git a/config/_default/params.toml b/config/_default/params.toml index f2d3fcfb..6e6b46dc 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -12,6 +12,7 @@ autoSwitchAppearance = true enableSearch = false enableCodeCopy = false enableImageLazyLoading = true +enableImageWebp = true # robots = "" fingerprintAlgorithm = "sha256" diff --git a/exampleSite/config/_default/params.toml b/exampleSite/config/_default/params.toml index 2b3fa153..3317d667 100644 --- a/exampleSite/config/_default/params.toml +++ b/exampleSite/config/_default/params.toml @@ -12,6 +12,7 @@ autoSwitchAppearance = true enableSearch = true enableCodeCopy = true enableImageLazyLoading = true +enableImageWebp = true # robots = "" fingerprintAlgorithm = "sha256" diff --git a/layouts/_default/_markup/render-image.html b/layouts/_default/_markup/render-image.html index ac82a6aa..593279b6 100644 --- a/layouts/_default/_markup/render-image.html +++ b/layouts/_default/_markup/render-image.html @@ -1,64 +1,28 @@ {{ $url := urls.Parse .Destination }} {{ $altText := .Text }} {{ $caption := .Title }} -{{ $lazyLoad := $.Page.Site.Params.enableImageLazyLoading | default true }} -{{ if findRE "^https?" $url.Scheme }} -
- {{ $altText }} - {{ with $caption }}
{{ . | markdownify }}
{{ end }} -
-{{ else }} - {{ $resource := "" }} - {{ if $.Page.Resources.GetMatch ($url.String) }} - {{ $resource = $.Page.Resources.GetMatch ($url.String) }} - {{ else if resources.GetMatch ($url.String) }} - {{ $resource = resources.Get ($url.String) }} - {{ end }} - {{ with $resource }} -
- {{ $altText }} - {{ with $caption }}
{{ . | markdownify }}
{{ end }} -
- {{ else }} -
- {{ $altText }} - {{ with $caption }}
{{ . | markdownify }}
{{ end }} -
- {{ end }} -{{ end }} \ No newline at end of file +{{ $class := "mx-auto my-0 rounded-md" }} + +{{ $file := $url.Path }} +{{ $img := .Page.Resources.GetMatch $file }} +{{- if and (not $img) .Page.File }} + {{ $path := path.Join .Page.File.Dir $file }} + {{ $img = resources.Get $path }} +{{ end -}} + +{{/* https://github.com/gohugoio/hugo/pull/10666 */}} +{{- $params := $url.Query -}} +{{- $x2Param := $params.Get "2x" -}} +{{- $x2 := false -}} +{{- if eq $x2Param "true" -}} + {{- $x2 = true -}} +{{- end -}} + +
+ {{- with $img -}} + {{ partial "picture.html" (dict "img" . "alt" $altText "class" $class "x2" $x2) }} + {{- else -}} + {{ $altText }} + {{- end -}} + {{ with $caption }}
{{ . | markdownify }}
{{ end }} +
diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 340e95a1..726dac87 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -15,25 +15,9 @@ {{ with $feature }}
- {{ $.Params.featureAlt | default $.Params.coverAlt | default + {{ $altText := $.Params.featureAlt | default $.Params.coverAlt | default "" }} + {{ $class := "mb-6 -mt-4 rounded-md" }} + {{ partial "picture.html" (dict "img" . "alt" $altText "class" $class "lazy" false) }} {{ with $.Params.coverCaption }}
{{ . | markdownify }}
{{ end }} diff --git a/layouts/partials/picture.html b/layouts/partials/picture.html new file mode 100644 index 00000000..752f84a8 --- /dev/null +++ b/layouts/partials/picture.html @@ -0,0 +1,112 @@ +{{ $img := .img }} +{{ $alt := .alt }} +{{ $class := .class }} +{{ $lazy := .lazy | default $.Page.Site.Params.enableImageLazyLoading | default true }} +{{ $webp := .webp | default $.Page.Site.Params.enableImageWebp | default true }} +{{ $lqip := .lqip | default false }} +{{ $x2 := .x2 | default false }} + +{{ with $img }} + {{ if (eq .MediaType.SubType "svg") }} + {{ $width := ""}} + {{ $height := ""}} + {{ $svgContent := .Content }} + {{ range (findRESubmatch `]*width=["']([.0-9]*)["'a-zA-Z]` $svgContent 1) }} + {{ $width = index . 1 }} + {{ end }} + {{ range (findRESubmatch `]*height=["']([.0-9]*)["'a-zA-Z]` $svgContent 1) }} + {{ $height = index . 1 }} + {{ end }} + {{ if (eq "" $width $height) }} + {{ range (findRESubmatch `]*viewBox=["']?([.0-9]*) ([.0-9]*) ([.0-9]*) ([.0-9]*)` $svgContent 1) }} + {{ $width = index . 3 }} + {{ $height = index . 4 }} + {{ end }} + {{ end }} + {{ if (eq "" $width $height) }} + {{ warnf "Can't detect width and height for SVG %s" .RelPermalink }} + {{/* do not use lazy without dimensions */}} + {{ $lazy = false }} + {{ end }} + + {{ . }} + + {{ else }} + + {{ $width := .Width }} + {{ $height := .Height }} + {{ if $x2 }} + {{ $width = div .Width 2 }} + {{ $height = div .Height 2 }} + {{ end }} + {{ if $webp }} + + {{ end }} + {{ . }} + + {{ end }} +{{ end }} \ No newline at end of file diff --git a/layouts/shortcodes/figure.html b/layouts/shortcodes/figure.html index 7028c6c1..118b7a05 100644 --- a/layouts/shortcodes/figure.html +++ b/layouts/shortcodes/figure.html @@ -6,45 +6,23 @@ {{ $caption := .Get "caption" }} {{ $href := .Get "href" }} {{ $class := .Get "class" }} + + {{ $file := $url.Path }} + {{ $img := .Page.Resources.GetMatch $file }} + {{- if and (not $img) .Page.File }} + {{ $path := path.Join .Page.File.Dir $file }} + {{ $img = resources.Get $path }} + {{ end -}} + {{ with $href }}{{ end }} - {{ $altText }} + + {{- with $img -}} + {{ partial "picture.html" (dict "img" . "alt" $altText "class" $class) }} + {{- else -}} + {{ $altText }} + {{- end -}} + {{ with $href }}{{ end }} {{ with $caption }}
{{ . | markdownify }}
{{ end }} diff --git a/layouts/shortcodes/screenshot.html b/layouts/shortcodes/screenshot.html index 653e1fd7..e08243ce 100644 --- a/layouts/shortcodes/screenshot.html +++ b/layouts/shortcodes/screenshot.html @@ -4,17 +4,16 @@ {{- if .Get "href" -}} {{- end -}} - {{ with .Get + + {{ $altText := "" }} + {{ with .Get "alt" }} + {{ $altText = . }} + {{ else }} + {{ $altText = (.Get "caption") | markdownify | plainify }} + {{ end }} + + {{ partial "picture.html" (dict "img" $image "alt" $altText "x2" true) }} + {{- if .Get "href" }}{{ end -}} {{- if .Get "caption" -}}