From 14e58b4137f8f77af43cad8b712596c2e1ab7e8a Mon Sep 17 00:00:00 2001 From: Vika Date: Mon, 26 Aug 2024 17:49:45 +0300 Subject: Indicate `u-uid` as `rel=canonical` This only displays on top-level entries, not ones in feeds. This should help search indexers know which URI is the canonical for a given link. I wonder why Google doesn't bother to parse MF2 markup. Do they think themselves monarchs of the Internet, able to show peasants their place? their search results are shitty anyway, I'd rather ask GPT-2. Yes, GPT TWO. Not even 3, 4 or 4o! --- src/frontend/mod.rs | 2 +- templates/src/mf2.rs | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/frontend/mod.rs b/src/frontend/mod.rs index 4120b55..69f6aa5 100644 --- a/src/frontend/mod.rs +++ b/src/frontend/mod.rs @@ -367,7 +367,7 @@ pub async fn catchall( feeds: channels, user: session.as_deref(), content: match post.pointer("/type/0").and_then(|i| i.as_str()) { - Some("h-entry") => Entry { post: &post }.to_string(), + Some("h-entry") => Entry { post: &post, from_feed: false, }.to_string(), Some("h-feed") => Feed { feed: &post, cursor: cursor.as_deref() }.to_string(), Some("h-card") => VCard { card: &post }.to_string(), unknown => { diff --git a/templates/src/mf2.rs b/templates/src/mf2.rs index 0b33f9f..4a683d6 100644 --- a/templates/src/mf2.rs +++ b/templates/src/mf2.rs @@ -21,9 +21,9 @@ fn decode_geo_uri(uri: &str) -> String { } markup::define! { - Entry<'a>(post: &'a serde_json::Value) { + Entry<'a>(post: &'a serde_json::Value, from_feed: bool) { @if post.pointer("/properties/like-of").is_none() && post.pointer("/properties/bookmark-of").is_none() { - @FullEntry { post } + @FullEntry { post, from_feed: *from_feed } } else { // Show a mini-post. @MiniEntry { post } @@ -96,7 +96,7 @@ markup::define! { } } } - FullEntry<'a>(post: &'a serde_json::Value) { + FullEntry<'a>(post: &'a serde_json::Value, from_feed: bool) { article."h-entry" { header.metadata { @if let Some(name) = post["properties"]["name"][0].as_str() { @@ -121,7 +121,7 @@ markup::define! { } div { span { - a."u-url"."u-uid"[href=post["properties"]["uid"][0].as_str().unwrap()] { + a."u-url"."u-uid"[href=post["properties"]["uid"][0].as_str().unwrap(), rel=(!from_feed).then_some("canonical")] { @if let Some(published) = post["properties"]["published"][0].as_str() { time."dt-published"[datetime=published] { @chrono::DateTime::parse_from_rfc3339(published) @@ -367,7 +367,7 @@ markup::define! { @if feed["children"].is_array() { @for child in feed["children"].as_array().unwrap() { @match child["type"][0].as_str().unwrap() { - "h-entry" => { @Entry { post: child } } + "h-entry" => { @Entry { post: child, from_feed: true, } } "h-feed" => { @Feed { feed: child, cursor: None } } "h-food" => { @Food { food: child } } //"h-event" => { } -- cgit 1.4.1