summaryrefslogtreecommitdiff
path: root/templates/shortcodes/image.html
diff options
context:
space:
mode:
authorxAlpharax <42233094+xAlpharax@users.noreply.github.com>2025-08-12 06:50:12 +0300
committerxAlpharax <42233094+xAlpharax@users.noreply.github.com>2025-08-12 06:50:12 +0300
commit93fd472f353d004ae399eb1d5619539a7efe30c5 (patch)
treefde421d05e580cd8143be95699c8c7a7c81d040a /templates/shortcodes/image.html
parent37b2ee0eeaeeb4e3de1029556538b7a4e0c775e2 (diff)
Major changes and the start of my post on a rust week.
Changes to be committed: modified: .gitignore modified: config.toml modified: content/posts/rust.md modified: templates/404.html modified: templates/index.html new file: templates/shortcodes/image.html new file: static/css/critical.css deleted: rsync_to_testing
Diffstat (limited to 'templates/shortcodes/image.html')
-rw-r--r--templates/shortcodes/image.html46
1 files changed, 46 insertions, 0 deletions
diff --git a/templates/shortcodes/image.html b/templates/shortcodes/image.html
new file mode 100644
index 0000000..8b1a006
--- /dev/null
+++ b/templates/shortcodes/image.html
@@ -0,0 +1,46 @@
+{# /templates/shortcodes/image.html (Version 7 - The Final Quality Fix) #}
+
+{# --- Manually check for required 'src' and 'alt' parameters --- #}
+{% if not src %}
+ {{ throw(message="The 'src' parameter is required for the image shortcode.") }}
+{% endif %}
+{% if not alt %}
+ {{ throw(message="The 'alt' parameter is required for the image shortcode.") }}
+{% endif %}
+
+{# --- Get optional parameters, with sensible defaults --- #}
+{% set lazy = lazy | default(value=true) %}
+{% set fetch = fetch | default(value="auto") %}
+{% set quality = quality | default(value=60) %} {# <-- New: Set a default quality #}
+
+{# --- Let Zola process the image into ALL necessary formats and sizes --- #}
+{% set image_meta = get_image_metadata(path=src) %}
+
+{# Create small versions (PNG and WebP) with higher compression #}
+{% set image_small_png = resize_image(path=src, width=383, op="fit_width", quality=quality) %}
+{% set image_small_webp = resize_image(path=src, width=383, op="fit_width", format="webp", quality=quality) %}
+
+{# Create large versions (PNG and WebP) with higher compression #}
+{% set image_large_png = resize_image(path=src, width=682, op="fit_width", quality=quality) %}
+{% set image_large_webp = resize_image(path=src, width=682, op="fit_width", format="webp", quality=quality) %}
+
+<picture>
+ {# --- MODERN FORMATS FIRST (WebP) --- #}
+ <source media="(max-width: 600px)" srcset="{{ image_small_webp.url }}" type="image/webp">
+ <source media="(min-width: 601px)" srcset="{{ image_large_webp.url }}" type="image/webp">
+
+ {# --- FALLBACK FORMATS (PNG) --- #}
+ <source media="(max-width: 600px)" srcset="{{ image_small_png.url }}">
+ <source media="(min-width: 601px)" srcset="{{ image_large_png.url }}">
+
+ {# --- FINAL FALLBACK <img> --- #}
+ <img
+ src="{{ image_large_png.url }}"
+ width="{{ image_meta.width }}"
+ height="{{ image_meta.height }}"
+ alt="{{ alt }}"
+ {% if lazy %}loading="lazy"{% else %}loading="eager"{% endif %}
+ fetchpriority="{{ fetch }}"
+ style="width: 100%; height: auto; border-radius: 4px; margin: 1.5rem 0;"
+ >
+</picture>