diff --git a/templates/partials/header.html b/templates/partials/header.html
index 3d3c56f..e07bcd8 100644
--- a/templates/partials/header.html
+++ b/templates/partials/header.html
@@ -102,36 +102,7 @@
{# Image for social media sharing #}
- {%- set social_media_card = macros_settings::evaluate_setting_priority(setting="social_media_card", page=page | default(value=""), section=section | default(value=""), default_global_value="") -%}
- {% if social_media_card %}
- {# Try to construct the image path relative to the current page #}
- {% set colocated_path = page.colocated_path | default(value="") %}
- {% set file_path = colocated_path ~ social_media_card %}
-
- {# Fetch metadata to verify image existence at the relative path #}
- {%- set meta = get_image_metadata(path=file_path, allow_missing=true) -%}
-
- {# Check if relative path exists, else try absolute path #}
- {% if meta %}
- {% set final_path = file_path %}
- {% else %}
- {# If the relative path didn't work, try fetching metadata for the absolute path #}
- {% set meta = get_image_metadata(path=social_media_card, allow_missing=true) %}
- {% if meta %}
- {% set final_path = social_media_card %}
- {% else %}
- {# Throw an error if the image doesn't exist at either path #}
- {{ throw(message="Could not get metadata for the specified social media card image in page " ~ page.path ~ ". Attempted relative path: '" ~ file_path ~ "' and absolute path: '" ~ social_media_card ~ "'. Ensure the file exists at one of these locations.") }}
- {% endif %}
- {% endif %}
-
- {# Generate the social media meta tags #}
-
-
-
-
-
- {% endif %}
+ {%- include "partials/social_media_images.html" -%}
{# Add og:locale and hreflang tags for multilingual sites #}
{%- if config.languages | length > 0 and current_url %}
diff --git a/templates/partials/social_media_images.html b/templates/partials/social_media_images.html
new file mode 100644
index 0000000..a086ce7
--- /dev/null
+++ b/templates/partials/social_media_images.html
@@ -0,0 +1,44 @@
+{# Image for social media sharing #}
+{%- set social_media_card = macros_settings::evaluate_setting_priority(setting="social_media_card", page=page | default(value=""), section=section | default(value=""), default_global_value="") -%}
+{% if social_media_card %}
+ {# Try to find the image in current page, parent directories, and as absolute path #}
+ {% set page_path = page.colocated_path | default(value="") %}
+ {% set current_path = page_path ~ social_media_card %}
+
+ {# Try parent path by removing the last directory component #}
+ {% set parent_path = page_path | split(pat="/") | slice(end=-2) | join(sep="/") %}
+ {% if parent_path %}
+ {% set parent_path = parent_path ~ "/" %}
+ {% endif %}
+ {% set parent_relative_path = parent_path ~ social_media_card %}
+
+ {# Check all possible locations #}
+ {%- set current_meta = get_image_metadata(path=current_path, allow_missing=true) -%}
+ {%- set parent_meta = get_image_metadata(path=parent_relative_path, allow_missing=true) -%}
+ {%- set absolute_meta = get_image_metadata(path=social_media_card, allow_missing=true) -%}
+
+ {% if current_meta %}
+ {% set final_path = current_path %}
+ {% set meta = current_meta %}
+ {% elif parent_meta %}
+ {% set final_path = parent_relative_path %}
+ {% set meta = parent_meta %}
+ {% elif absolute_meta %}
+ {% set final_path = social_media_card %}
+ {% set meta = absolute_meta %}
+ {% else %}
+ {# Throw an error if the image doesn't exist at any path #}
+ {{ throw(message="Could not find social media card image. Tried:
+ 1. Current page path: '" ~ current_path ~ "'
+ 2. Parent page path: '" ~ parent_relative_path ~ "'
+ 3. Absolute path: '" ~ social_media_card ~ "'
+ Please ensure the file exists at one of these locations.") }}
+ {% endif %}
+
+ {# Generate the social media meta tags #}
+
+
+
+
+
+{% endif %}