welpo/tabi

relative path social media cards break with hierarchy

welpo opened this issue · 0 comments

Since the social media card setting follows the hierarchy (docs), it tries to find the relative path from the wrong place (the child page, when it's set on the parent).

I'm guessing this can also happen for sections.

Workarounds:

  • Use an absolute path
  • Set social_media_card = "" on the child page(s)

Problematic lines:

{# 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 %}

Original report:

When I add social_media_card = "image.webp" to the parent page, header.html expects the child page to also have the file:

Could not get metadata for the specified social media card image in page /parent/child/. Attempted relative path: 'image.webp' and absolute path: 'image.webp'. Ensure the file exists at one of these locations.

Originally posted by @JVimes in #384 (comment)