+ @if (post().published_at; as published) {
+
+ }
+
+ + {{ post().title }} +
+ @if (post().excerpt; as excerpt) { +{{ excerpt }}
+ } + {{ copy().blog.readMore }} → +diff --git a/README.md b/README.md index e7653e5..ec475ff 100644 --- a/README.md +++ b/README.md @@ -266,8 +266,10 @@ any page. That category has to exist with the slug `blog` in every language - A post shows its date and leads back to the blog; its structured data is a `BlogPosting`. - `/blog/rss.xml?lang=xx` is the feed, one per language, announced in `
`. -- The footer does not list posts one by one — it would grow without end — but - links the blog once there is any. +- Once there is a post, the blog is in the header menu (desktop and mobile) + and the landing shows the three latest under "Novedades"; the footer links + it too, but does not list posts one by one — it would grow without end. + A blog reachable only from the footer turned out to be one nobody found. ## Search engines and link previews diff --git a/landing/src/app/core/copy.ts b/landing/src/app/core/copy.ts index dd9f896..8696acb 100644 --- a/landing/src/app/core/copy.ts +++ b/landing/src/app/core/copy.ts @@ -136,6 +136,7 @@ export interface Copy { readMore: string; published: string; feed: string; + seeAll: string; }; service: { eyebrow: string; @@ -326,6 +327,7 @@ const es: Copy = { readMore: 'Leer', published: 'Publicado el', feed: 'Suscríbete por RSS', + seeAll: 'Ver todas las novedades', }, service: { eyebrow: 'Servicio', @@ -529,6 +531,7 @@ const en: Copy = { readMore: 'Read', published: 'Published on', feed: 'Subscribe via RSS', + seeAll: 'See all the news', }, service: { eyebrow: 'Service', @@ -732,6 +735,7 @@ const ca: Copy = { readMore: 'Llegir', published: 'Publicat el', feed: "Subscriu-t'hi per RSS", + seeAll: 'Veure totes les novetats', }, service: { eyebrow: 'Servei', diff --git a/landing/src/app/core/routed-page.ts b/landing/src/app/core/routed-page.ts index 987309f..77e7f40 100644 --- a/landing/src/app/core/routed-page.ts +++ b/landing/src/app/core/routed-page.ts @@ -23,7 +23,8 @@ import type { PublicTechnology, } from './api.types'; import { BLOG_CATEGORY, byPublication, isBlogPost } from './blog'; -import { resolveRoute, type RouteMatch } from './routes'; +import { copyFor } from './copy'; +import { listingPath, resolveRoute, type RouteMatch } from './routes'; /** The record, tagged with its type so the template can switch on it. */ export type RoutedRecord = @@ -132,13 +133,15 @@ async function fetchRecord(route: RouteMatch): Promise- {{ excerpt }} -
- } - {{ copy().blog.readMore }} → -{{ excerpt }}
+ } + {{ copy().blog.readMore }} → +