Skip to content

Commit d2f4632

Browse files
authored
Update the Popular theme to v0.7.0 and add an llms.txt for agents (#89)
Theme v0.6.0 -> v0.7.0. Most of the release is meetup machinery we do not use (calendar feed, venue logistics, talk archive, community-chat CTA), and the empty-state fix does not apply because we have no events section. Adopted here: - The profile back link on speaker and host pages. Both templates are our own forks, so the theme change does not reach them automatically. Hosts get "All hosts" rather than the theme's "All organizers". - /llms.txt, a plain-text summary for AI agents. The theme's template is meetup-shaped, so layouts/index.llms.txt overrides it with the show: latest episode, where to listen, the five most recent full episodes, and the key pages. Regenerated every build. - popularVersion = "" to keep the theme's new footer version badge off this site, without forking the footer partial.
1 parent 9df8aea commit d2f4632

6 files changed

Lines changed: 43 additions & 4 deletions

File tree

config/_default/params.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ brandSub = "Hidden Figures of Python"
3737
ogImage = "images/pypodcats-2025-s.png"
3838
customCSS = ["css/pypodcats.css"]
3939

40+
# The theme sets popularVersion (v0.7.0+) and the footer prints it next to the
41+
# Popular credit. Blank it so this site's footer keeps just the credit link.
42+
popularVersion = ""
43+
4044
# Popular theme v0.6.0: SEO knobs
4145
[seo]
4246
# Keep FAQPage JSON-LD from {{< faq >}} blocks (default true).

hugo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ target = '$1'
7575

7676
############################# Outputs ############################
7777
[outputs]
78-
home = ["HTML", "RSS", "WebAppManifest", "SearchIndex"]
78+
# LLMS emits /llms.txt for AI agents (Popular theme v0.7.0); the format itself
79+
# comes from the theme, the content from layouts/index.llms.txt.
80+
home = ["HTML", "RSS", "WebAppManifest", "SearchIndex", "LLMS"]
7981
section = ['html', 'rss']
8082

8183
############################# Imaging ############################

layouts/index.llms.txt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{{- /* §8 llms.txt for the podcast layer. The theme's version (themes/popular/
2+
layouts/index.llms.txt) is meetup-shaped: it names the next upcoming
3+
event and links the iCalendar feed, neither of which exists here. This
4+
override answers the questions an agent actually has about a podcast:
5+
what the show is, where to listen, and what the latest episodes are.
6+
Regenerated every build, so the latest-episode line stays true. */ -}}
7+
{{- $full := where (where site.RegularPages "Section" "episodes") "Params.episode_type" "!=" "trailer" -}}
8+
{{- $recent := first 5 $full.ByDate.Reverse -}}
9+
{{- $latest := index $recent 0 -}}
10+
# {{ site.Title }}
11+
{{ with site.Params.description }}
12+
{{ . }}
13+
{{ end }}
14+
{{ with $latest }}Latest episode: {{ .Title }}, published {{ .Date | time.Format ":date_long" }} ({{ .Permalink }}){{ end }}
15+
16+
## Listen and follow
17+
{{ range site.Params.social }}{{ .label }}: {{ .url | absURL }}
18+
{{ end }}
19+
## Recent episodes
20+
{{ range $recent }}{{- $ep := . -}}- {{ .Title }}, {{ .Date | time.Format ":date_long" }}{{ with .Params.speaker }}{{ if not (in $ep.Title .title) }}, guest {{ .title }}{{ end }}{{ end }} ({{ .Permalink }})
21+
{{ end }}
22+
## Links
23+
All episodes: {{ (site.GetPage "/episodes").Permalink }}
24+
Guests: {{ (site.GetPage "/speakers").Permalink }}
25+
Hosts: {{ (site.GetPage (print "/" (partial "section.html" "team"))).Permalink }}
26+
Blog: {{ (site.GetPage "/blog").Permalink }}
27+
{{ with site.GetPage "/about" }}About and FAQ: {{ .Permalink }}
28+
{{ end }}{{ with site.GetPage "/subscribe" }}Subscribe: {{ .Permalink }}
29+
{{ end }}{{ with site.GetPage "/contact" }}Contact: {{ .Permalink }}
30+
{{ end }}
31+
Built with the Popular theme.

layouts/organizers/single.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
{{- end -}}
1313
{{- $posts := where (where site.RegularPages "Section" "blog") "Params.authors" "intersect" (slice $slug) -}}
1414

15-
{{ partial "page-hero.html" (dict "eyebrow" (.Params.role | default "Host") "title" .Title) }}
15+
{{- /* Theme 0.7.0 back link, with our own label: the theme string for this
16+
section says "All organizers", and we call them hosts. */ -}}
17+
{{ partial "page-hero.html" (dict "eyebrow" (.Params.role | default "Host") "title" .Title "backHref" (print (partial "section.html" "team") "/") "backLabel" "All hosts") }}
1618

1719
<section class="g-bg-ink">
1820
<div class="g-container g-stats">

layouts/speakers/single.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
pages repeat the bio as body text), so render it once in the persona
55
card, and list the speaker's episodes instead of the theme's
66
events-based sessions. */ -}}
7-
{{ partial "page-hero.html" (dict "eyebrow" (.Params.eyebrow | default "Speaker") "title" .Title) }}
7+
{{ partial "page-hero.html" (dict "eyebrow" (.Params.eyebrow | default "Speaker") "title" .Title "backHref" "speakers/" "backLabel" (i18n "allSpeakers")) }}
88
<section class="g-bg-white g-section">
99
<div class="g-container">
1010
<div class="g-article" style="margin-bottom:var(--space-5)">

themes/popular

Submodule popular updated 122 files

0 commit comments

Comments
 (0)