From 0df932bd94e02847b5c46fbeb61ca53b1ffd35ad Mon Sep 17 00:00:00 2001 From: giles Date: Sat, 28 Feb 2026 16:20:44 +0000 Subject: [PATCH] Fix blog page title showing post name twice MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stop concatenating post title into base_title in route context. Build proper "Post Title — Site Title" format in meta component instead. Co-Authored-By: Claude Opus 4.6 --- blog/bp/blog/routes.py | 2 +- blog/bp/post/routes.py | 2 +- blog/sexp/detail.sexpr | 4 ++-- blog/sexp/sexp_components.py | 8 +++++--- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/blog/bp/blog/routes.py b/blog/bp/blog/routes.py index 5b0d830..9efebf8 100644 --- a/blog/bp/blog/routes.py +++ b/blog/bp/blog/routes.py @@ -125,7 +125,7 @@ def register(url_prefix, title): ctx = { **p_data, - "base_title": f"{get_config()['title']} {p_data['post']['title']}", + "base_title": get_config()["title"], "container_nav_html": container_nav_html, } diff --git a/blog/bp/post/routes.py b/blog/bp/post/routes.py index 7e38297..5da6670 100644 --- a/blog/bp/post/routes.py +++ b/blog/bp/post/routes.py @@ -78,7 +78,7 @@ def register(): ctx = { **p_data, - "base_title": f"{config()['title']} {p_data['post']['title']}", + "base_title": config()["title"], "container_nav_html": container_nav_html, } diff --git a/blog/sexp/detail.sexpr b/blog/sexp/detail.sexpr index 3f351f7..fdff9e2 100644 --- a/blog/sexp/detail.sexpr +++ b/blog/sexp/detail.sexpr @@ -31,10 +31,10 @@ (when html-content (div :class "blog-content p-2" (raw! html-content)))) (div :class "pb-8"))) -(defcomp ~blog-meta (&key robots base-title desc canonical og-type og-title image twitter-card twitter-title) +(defcomp ~blog-meta (&key robots page-title desc canonical og-type og-title image twitter-card twitter-title) (<> (meta :name "robots" :content robots) - (title base-title) + (title page-title) (meta :name "description" :content desc) (when canonical (link :rel "canonical" :href canonical)) (meta :property "og:type" :content og-type) diff --git a/blog/sexp/sexp_components.py b/blog/sexp/sexp_components.py index 6c28784..ec08b95 100644 --- a/blog/sexp/sexp_components.py +++ b/blog/sexp/sexp_components.py @@ -846,12 +846,14 @@ def _post_meta_html(ctx: dict) -> str: from quart import request as req canonical = post.get("canonical_url") or (req.url if req else "") - og_title = post.get("og_title") or base_title - tw_title = post.get("twitter_title") or base_title + post_title = post.get("meta_title") or post.get("title") or "" + page_title = f"{post_title} \u2014 {base_title}" if post_title else base_title + og_title = post.get("og_title") or page_title + tw_title = post.get("twitter_title") or page_title is_article = not post.get("is_page") return render("blog-meta", - robots=robots, base_title=base_title, desc=desc, canonical=canonical, + robots=robots, page_title=page_title, desc=desc, canonical=canonical, og_type="article" if is_article else "website", og_title=og_title, image=image, twitter_card="summary_large_image" if image else "summary",