fix: derive YouTube ID from URL in all listing templates
Build & Deploy / build-and-deploy (push) Successful in 1m49s
Build & Deploy / build-and-deploy (push) Successful in 1m49s
Listing pages (blog, frontpage, likes, bookmarks, reposts, replies,
featured) only checked post.data.youtubeVideoId from frontmatter.
Older posts without that field fell through to unfurl, which cannot
scrape YouTube and returns a text-only fallback — no thumbnail image.
Apply the same URL-derived fallback already used in reply-context.njk:
{% set _ytId = post.data.youtubeVideoId or (likedUrl | youtubeId) %}
Frontmatter value still takes precedence; youtubeId filter handles
both youtube.com?v= and youtu.be/ formats.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -59,9 +59,10 @@
|
||||
{{ post.date | dateDisplay }}
|
||||
</time>
|
||||
</div>
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (likedUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{{ likedUrl | unfurlCard | safe }}
|
||||
@@ -98,9 +99,10 @@
|
||||
<a class="text-surface-900 dark:text-surface-100 hover:text-accent-600 dark:hover:text-accent-400 hover:underline" href="{{ post.url }}">{{ post.data.title }}</a>
|
||||
</h3>
|
||||
{% endif %}
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (bookmarkedUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{{ bookmarkedUrl | unfurlCard | safe }}
|
||||
@@ -132,9 +134,10 @@
|
||||
{{ post.date | dateDisplay }}
|
||||
</time>
|
||||
</div>
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (repostedUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{{ repostedUrl | unfurlCard | safe }}
|
||||
@@ -166,9 +169,10 @@
|
||||
{{ post.date | dateDisplay }}
|
||||
</time>
|
||||
</div>
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (replyToUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{{ replyToUrl | unfurlCard | safe }}
|
||||
|
||||
@@ -75,9 +75,10 @@
|
||||
{% endif %}
|
||||
{% include "components/garden-badge.njk" %}
|
||||
</div>
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (likedUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{{ likedUrl | unfurlCard | safe }}
|
||||
@@ -126,9 +127,10 @@
|
||||
<a class="hover:text-amber-800 dark:hover:text-amber-400" href="{{ post.url }}">{{ post.data.title }}</a>
|
||||
</h3>
|
||||
{% endif %}
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (bookmarkedUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{{ bookmarkedUrl | unfurlCard | safe }}
|
||||
@@ -172,9 +174,10 @@
|
||||
{% endif %}
|
||||
{% include "components/garden-badge.njk" %}
|
||||
</div>
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (repostedUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{{ repostedUrl | unfurlCard | safe }}
|
||||
@@ -218,9 +221,10 @@
|
||||
{% endif %}
|
||||
{% include "components/garden-badge.njk" %}
|
||||
</div>
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (replyToUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{{ replyToUrl | unfurlCard | safe }}
|
||||
|
||||
@@ -83,9 +83,10 @@ permalink: "blog/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNumber
|
||||
{% endif %}
|
||||
{% include "components/garden-badge.njk" %}
|
||||
</div>
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (likedUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{% unfurl likedUrl %}
|
||||
@@ -136,9 +137,10 @@ permalink: "blog/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNumber
|
||||
<a class="hover:text-[#b57614] dark:hover:text-[#d79921]" href="{{ post.url }}">{{ post.data.title }}</a>
|
||||
</h2>
|
||||
{% endif %}
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (bookmarkedUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{% unfurl bookmarkedUrl %}
|
||||
@@ -184,9 +186,10 @@ permalink: "blog/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNumber
|
||||
{% endif %}
|
||||
{% include "components/garden-badge.njk" %}
|
||||
</div>
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (repostedUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{% unfurl repostedUrl %}
|
||||
@@ -232,9 +235,10 @@ permalink: "blog/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNumber
|
||||
{% endif %}
|
||||
{% include "components/garden-badge.njk" %}
|
||||
</div>
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (replyToUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{% unfurl replyToUrl %}
|
||||
|
||||
+3
-2
@@ -55,9 +55,10 @@ permalink: "bookmarks/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageN
|
||||
{# Support both camelCase (Indiekit Eleventy preset) and underscore (legacy) property names #}
|
||||
{% set bookmarkedUrl = post.data.bookmarkOf or post.data.bookmark_of %}
|
||||
{% if bookmarkedUrl %}
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (bookmarkedUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{% unfurl bookmarkedUrl %}
|
||||
|
||||
@@ -53,9 +53,10 @@ permalink: "likes/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNumbe
|
||||
{# Support both camelCase (Indiekit Eleventy preset) and underscore (legacy) property names #}
|
||||
{% set likedUrl = post.data.likeOf or post.data.like_of %}
|
||||
{% if likedUrl %}
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (likedUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{% unfurl likedUrl %}
|
||||
|
||||
+3
-2
@@ -59,9 +59,10 @@ permalink: "replies/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNum
|
||||
{% set replyTo = post.data.inReplyTo or post.data.in_reply_to %}
|
||||
{% if replyTo %}
|
||||
{% set protocol = replyTo | protocolType %}
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (replyTo | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{% unfurl replyTo %}
|
||||
|
||||
+3
-2
@@ -58,9 +58,10 @@ permalink: "reposts/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNum
|
||||
{# Support both camelCase (Indiekit Eleventy preset) and underscore (legacy) property names #}
|
||||
{% set repostedUrl = post.data.repostOf or post.data.repost_of %}
|
||||
{% if repostedUrl %}
|
||||
{% if post.data.youtubeVideoId %}
|
||||
{% set _ytId = post.data.youtubeVideoId or (repostedUrl | youtubeId) %}
|
||||
{% if _ytId %}
|
||||
<div class="video-embed eleventy-plugin-youtube-embed not-prose my-4">
|
||||
<lite-youtube videoid="{{ post.data.youtubeVideoId }}" style="background-image: url('https://i.ytimg.com/vi/{{ post.data.youtubeVideoId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
<lite-youtube videoid="{{ _ytId }}" style="background-image: url('https://i.ytimg.com/vi/{{ _ytId }}/hqdefault.jpg');"><div class="lty-playbtn"></div></lite-youtube>
|
||||
</div>
|
||||
{% else %}
|
||||
{% unfurl repostedUrl %}
|
||||
|
||||
Reference in New Issue
Block a user