diff --git a/layouts/partials/function/suffix-validation.html b/layouts/partials/function/suffix-validation.html
index a3839bd7..02a35545 100644
--- a/layouts/partials/function/suffix-validation.html
+++ b/layouts/partials/function/suffix-validation.html
@@ -1,5 +1,5 @@
{{- $url := urls.Parse .Path -}}
-{{- $path := strings.TrimSuffix "/" ((printf "%v%v" $url.Host $url.Path) | lower) -}}
+{{- $path := path.Clean ((printf "%v%v" $url.Host $url.Path) | lower) -}}
{{- with $url.Scheme -}}
{{- $path = printf "%v://%v" . $path -}}
{{- end -}}
diff --git a/layouts/partials/plugin/image.html b/layouts/partials/plugin/image.html
index 725eeb94..04ef164b 100644
--- a/layouts/partials/plugin/image.html
+++ b/layouts/partials/plugin/image.html
@@ -1,5 +1,7 @@
{{- /* this method is only available for image resources that are raster images */ -}}
{{- $src := .Src -}}
+{{- $srcSmall := .SrcSmall | default $src -}}
+{{- $srcLarge := .SrcLarge | default $src -}}
{{- $class := .Class | default "" -}}
{{- $style := "" -}}
{{- $loading := .Loading | default "lazy" -}}
@@ -7,47 +9,50 @@
{{- $onerror := "" -}}
{{- $cacheRemoteImages := (.Params.cacheRemoteImages | default dict) | merge site.Params.cacheRemoteImages -}}
{{- $suffixList := slice ".jpeg" ".jpg" ".png" ".gif" ".bmp" ".tif" ".tiff" ".webp" -}}
+{{- $suffixValid := dict "Path" $src "Suffixes" $suffixList | partial "function/suffix-validation.html" -}}
+{{- $suffixValidSmall := dict "Path" $srcSmall "Suffixes" $suffixList | partial "function/suffix-validation.html" -}}
+{{- $suffixValidLarge := dict "Path" $srcLarge "Suffixes" $suffixList | partial "function/suffix-validation.html" -}}
+
+{{- /* handle for invalid suffix */ -}}
+{{- if not $suffixValid | and $src -}}
+ {{- $class = printf "%v suffix-invalid" $class -}}
+{{- end -}}
+{{- if not $suffixValidSmall | and $srcSmall -}}
+ {{- $class = printf "%v suffix-invalid__small" $class -}}
+{{- end -}}
+{{- if not $suffixValidLarge | and $srcLarge -}}
+ {{- $class = printf "%v suffix-invalid__large" $class -}}
+{{- end -}}
{{- /* handle for default size image */ -}}
{{- with dict "Path" $src "Resources" .Resources "CacheRemoteImages" $cacheRemoteImages.enable | partial "function/resource.html" -}}
{{- $url := urls.Parse $src -}}
- {{- $suffixValid := dict "Path" $src "Suffixes" $suffixList | partial "function/suffix-validation.html" -}}
{{- if not $url.Host | or $cacheRemoteImages.replace -}}
{{- $src = .RelPermalink -}}
{{- end -}}
- {{- if not $suffixValid -}}
- {{- $class = printf "%v suffix-invalid" $class -}}
- {{- else if eq .ResourceType "image" -}}
+ {{- if (eq .ResourceType "image") | and $suffixValid -}}
{{- $style = printf "--width: %vpx;--aspect-ratio: %v / %v;" .Width .Width .Height | safeHTMLAttr -}}
{{- end -}}
{{- end -}}
{{- /* handle for small size image */ -}}
-{{- $small := .SrcSmall | default $src -}}
{{- with dict "Path" .SrcSmall "Resources" .Resources "CacheRemoteImages" $cacheRemoteImages.enable | partial "function/resource.html" -}}
{{- $url := urls.Parse $.SrcSmall -}}
- {{- $suffixValid := dict "Path" $.SrcSmall "Suffixes" $suffixList | partial "function/suffix-validation.html" -}}
{{- if not $url.Host | or $cacheRemoteImages.replace -}}
- {{- $small = .RelPermalink -}}
+ {{- $srcSmall = .RelPermalink -}}
{{- end -}}
- {{- if not $suffixValid -}}
- {{- $class = printf "%v suffix-invalid__small" $class -}}
- {{- else if eq .ResourceType "image" -}}
+ {{- if (eq .ResourceType "image") | and $suffixValidSmall -}}
{{- $style = printf "%v--width-small: %vpx;--aspect-ratio-small: %v / %v;" $style .Width .Width .Height | safeHTMLAttr -}}
{{- end -}}
{{- end -}}
{{- /* handle for large size image */ -}}
-{{- $large := .SrcLarge | default $src -}}
{{- with dict "Path" .SrcLarge "Resources" .Resources "CacheRemoteImages" $cacheRemoteImages.enable | partial "function/resource.html" -}}
{{- $url := urls.Parse $.SrcLarge -}}
- {{- $suffixValid := dict "Path" $.SrcLarge "Suffixes" $suffixList | partial "function/suffix-validation.html" -}}
{{- if not $url.Host | or $cacheRemoteImages.replace -}}
- {{- $large = .RelPermalink -}}
+ {{- $srcLarge = .RelPermalink -}}
{{- end -}}
- {{- if not $suffixValid -}}
- {{- $class = printf "%v suffix-invalid__large" $class -}}
- {{- else if eq .ResourceType "image" -}}
+ {{- if (eq .ResourceType "image") | and $suffixValidLarge -}}
{{- $style = printf "%v--width-large: %vpx;--aspect-ratio-large: %v / %v;" $style .Width .Width .Height | safeHTMLAttr -}}
{{- end -}}
{{- end -}}
@@ -66,11 +71,16 @@
{{- $style = printf " style=\"%vbackground: url(%v) no-repeat center;\"" $style (resources.Get "svg/loading.svg" | minify).RelPermalink | safeHTMLAttr -}}
{{- end -}}
+{{- /* set image srcset */ -}}
+{{- $srcSmall = printf (cond (strings.Contains $srcSmall "?") "%v&size=small" "%v?size=small") $srcSmall -}}
+{{- $srcMedium := printf (cond (strings.Contains $src "?") "%v&size=medium" "%v?size=medium") $src -}}
+{{- $srcLarge = printf (cond (strings.Contains $srcLarge "?") "%v&size=large" "%v?size=large") $srcLarge -}}
+
{{- /* structure of lightgallery or img */ -}}
{{- if .Linked -}}
-
+
{{- end -}}
-