converts tags to topics
This commit is contained in:
@ -4,7 +4,7 @@ title = 'Protocol Oral History Project'
|
|||||||
theme = "hugo-starter-tailwind-basic"
|
theme = "hugo-starter-tailwind-basic"
|
||||||
|
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
tag = "tags"
|
topics = "topics"
|
||||||
narrator = "narrator"
|
narrator = "narrator"
|
||||||
facilitator = "facilitator"
|
facilitator = "facilitator"
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ date: 2025-03-18
|
|||||||
approved: 2025-03-20
|
approved: 2025-03-20
|
||||||
summary: "Drawing on many ancestral traditions and the experience of her own body, Asia Dorsey learns and teaches the pattern language of a healthy gut."
|
summary: "Drawing on many ancestral traditions and the experience of her own body, Asia Dorsey learns and teaches the pattern language of a healthy gut."
|
||||||
location: "Denver CO"
|
location: "Denver CO"
|
||||||
tags: [ancestors, food, health, indigeneity]
|
topics: [ancestors, food, health, indigeneity]
|
||||||
headshot: "/headshots/placeholder-headshot.png"
|
headshot: "/headshots/placeholder-headshot.png"
|
||||||
links:
|
links:
|
||||||
- text: "Bugs Bones & Botany"
|
- text: "Bugs Bones & Botany"
|
||||||
|
@ -7,7 +7,7 @@ approved: 2024-10-11
|
|||||||
summary: "After widespread resistance to codes of conduct in open-source software communities, Coraline Ada Ehmke's Contributor Covenant became the most popular code of conduct in the ecosystem."
|
summary: "After widespread resistance to codes of conduct in open-source software communities, Coraline Ada Ehmke's Contributor Covenant became the most popular code of conduct in the ecosystem."
|
||||||
location: "Chicago, USA"
|
location: "Chicago, USA"
|
||||||
headshot: "/headshots/placeholder-headshot.png"
|
headshot: "/headshots/placeholder-headshot.png"
|
||||||
tags: [code of conduct, dispute resolution, gender, open source, organizations, software]
|
topics: [code of conduct, dispute resolution, gender, open source, organizations, software]
|
||||||
---
|
---
|
||||||
|
|
||||||
*First of all, I want to begin with the question of how you how you prefer to introduce yourself.*
|
*First of all, I want to begin with the question of how you how you prefer to introduce yourself.*
|
||||||
|
@ -7,7 +7,7 @@ approved: 2024-12-16
|
|||||||
summary: "Good Market is a digital commons for enterprises that prioritize people and the planet over profit. It enables communities to set and enforce their own standards for doing business."
|
summary: "Good Market is a digital commons for enterprises that prioritize people and the planet over profit. It enables communities to set and enforce their own standards for doing business."
|
||||||
location: "Sri Lanka / United States"
|
location: "Sri Lanka / United States"
|
||||||
headshot: "/headshots/placeholder-headshot.png"
|
headshot: "/headshots/placeholder-headshot.png"
|
||||||
tags: [economics, organizations, ecology, standards]
|
topics: [economics, organizations, ecology, standards]
|
||||||
---
|
---
|
||||||
|
|
||||||
*I want to begin with the question of how you like to introduce yourself. How do you introduce yourself to somebody you've just met? Where do you begin?*
|
*I want to begin with the question of how you like to introduce yourself. How do you introduce yourself to somebody you've just met? Where do you begin?*
|
||||||
|
@ -7,7 +7,7 @@ approved: 2025-02-11
|
|||||||
summary: "Constructed languages, or conlangs, are the basis of a hobby, a science, and a community that now occupies a small corner of the entertainment industry."
|
summary: "Constructed languages, or conlangs, are the basis of a hobby, a science, and a community that now occupies a small corner of the entertainment industry."
|
||||||
location: "Wellington, NZ"
|
location: "Wellington, NZ"
|
||||||
headshot: "/headshots/placeholder-headshot.png"
|
headshot: "/headshots/placeholder-headshot.png"
|
||||||
tags: [fiction, gender, language, open source, software]
|
topics: [fiction, gender, language, open source, software]
|
||||||
---
|
---
|
||||||
|
|
||||||
*Can you tell me a bit about how you like to introduce yourself?*
|
*Can you tell me a bit about how you like to introduce yourself?*
|
||||||
|
@ -7,7 +7,7 @@ approved: 2025-03-04
|
|||||||
summary: "A diplomat for Bangladesh describes the role of protocol in high-profile international visits and treaty negotiations."
|
summary: "A diplomat for Bangladesh describes the role of protocol in high-profile international visits and treaty negotiations."
|
||||||
location: "Dhaka, Bangladesh"
|
location: "Dhaka, Bangladesh"
|
||||||
headshot: "/headshots/placeholder-headshot.png"
|
headshot: "/headshots/placeholder-headshot.png"
|
||||||
tags: [diplomacy, government, friendship]
|
topics: [diplomacy, government, friendship]
|
||||||
---
|
---
|
||||||
|
|
||||||
*How do you introduce yourself?*
|
*How do you introduce yourself?*
|
||||||
|
@ -12,7 +12,7 @@ links:
|
|||||||
url: https://evanp.me/
|
url: https://evanp.me/
|
||||||
- text: "ActivityPub: Programming the Social Web"
|
- text: "ActivityPub: Programming the Social Web"
|
||||||
url: https://www.oreilly.com/library/view/activitypub/9781098162733/
|
url: https://www.oreilly.com/library/view/activitypub/9781098162733/
|
||||||
tags: [decentralization, open source, organizations, social media, software, standards]
|
topics: [decentralization, open source, organizations, social media, software, standards]
|
||||||
---
|
---
|
||||||
|
|
||||||
*How do you introduce yourself?*
|
*How do you introduce yourself?*
|
||||||
|
@ -7,7 +7,7 @@ approved: 2024-12-02
|
|||||||
summary: "As a sport often played with no referees, ultimate frisbee has developed a strong set of norms for addressing conflict and self-governing."
|
summary: "As a sport often played with no referees, ultimate frisbee has developed a strong set of norms for addressing conflict and self-governing."
|
||||||
location: "East Greenbush, NY USA"
|
location: "East Greenbush, NY USA"
|
||||||
headshot: "/headshots/placeholder-headshot.png"
|
headshot: "/headshots/placeholder-headshot.png"
|
||||||
tags: [frisbee, sports, organizations, dispute resolution]
|
topics: [frisbee, sports, organizations, dispute resolution]
|
||||||
---
|
---
|
||||||
|
|
||||||
*How do you like to introduce yourself to people as you encounter them in the world?*
|
*How do you like to introduce yourself to people as you encounter them in the world?*
|
||||||
|
@ -30,8 +30,8 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
<meta name="description" content="{{ $description }}" />
|
<meta name="description" content="{{ $description }}" />
|
||||||
|
|
||||||
{{/* Generate keywords from tags */}}
|
{{/* Generate keywords from topics */}}
|
||||||
{{ with .Params.tags }}
|
{{ with .Params.topics }}
|
||||||
<meta name="keywords" content="{{ delimit . ", " }}" />
|
<meta name="keywords" content="{{ delimit . ", " }}" />
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
@ -60,14 +60,14 @@
|
|||||||
<meta property="article:published_time" content="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}" />
|
<meta property="article:published_time" content="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}" />
|
||||||
<meta property="article:modified_time" content="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }}" />
|
<meta property="article:modified_time" content="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }}" />
|
||||||
<meta property="article:section" content="Oral History" />
|
<meta property="article:section" content="Oral History" />
|
||||||
{{ with .Params.tags }}
|
{{ with .Params.topics }}
|
||||||
{{ range . }}
|
{{ range . }}
|
||||||
<meta property="article:tag" content="{{ . }}" />
|
<meta property="article:tag" content="{{ . }}" />
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{/* Author information using standard meta tags instead of article:author */}}
|
{{/* Author information using standard meta topics instead of article:author */}}
|
||||||
{{ with .Params.narrator }}
|
{{ with .Params.narrator }}
|
||||||
<meta name="author" content="{{ . }}" />
|
<meta name="author" content="{{ . }}" />
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h2 class="text-4xl my-8 font-bold text-center">Other {{ .Data.Plural | title }}</h2>
|
<h2 class="text-4xl my-8 font-bold text-center">Other {{ .Data.Plural }}</h2>
|
||||||
<div class="tag-cloud font-iosevka text-gray-600 text-center">
|
<div class="tag-cloud font-iosevka text-gray-600 text-center">
|
||||||
{{ $terms := index .Site.Taxonomies .Data.Plural }}
|
{{ $terms := index .Site.Taxonomies .Data.Plural }}
|
||||||
{{ range $term, $pages := $terms }}
|
{{ range $term, $pages := $terms }}
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
{{ if .Params.location }}
|
{{ if .Params.location }}
|
||||||
<p><strong>Location:</strong> {{ .Params.location }}</p>
|
<p><strong>Location:</strong> {{ .Params.location }}</p>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<p><strong>Topics:</strong> {{ partial "tags.html" . }}</p>
|
<p><strong>Topics:</strong> {{ partial "topics.html" . }}</p>
|
||||||
{{ if .Params.links }}
|
{{ if .Params.links }}
|
||||||
<div class="mt-4">
|
<div class="mt-4">
|
||||||
<p><strong>Narrator Links:</strong></p>
|
<p><strong>Narrator Links:</strong></p>
|
||||||
@ -41,7 +41,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
<aside class="max-w-screen-xl mx-auto px-4 lg:px-0">
|
<aside class="max-w-screen-xl mx-auto px-4 lg:px-0">
|
||||||
{{ partial "related-articles" (dict "page" . "tags" .Params.tags "limit" 3) }}
|
{{ partial "related-articles" (dict "page" . "topics" .Params.topics "limit" 3) }}
|
||||||
</aside>
|
</aside>
|
||||||
<div class="text-center my-12"><a href="/">Go Home</a></div>
|
<div class="text-center my-12"><a href="/">Go Home</a></div>
|
||||||
{{ end }}
|
{{ end }}
|
@ -14,9 +14,9 @@
|
|||||||
<section>
|
<section>
|
||||||
<h2 class="text-2xl mb-4 font-bold">Topics</h2>
|
<h2 class="text-2xl mb-4 font-bold">Topics</h2>
|
||||||
<div class="tag-cloud font-iosevka text-gray-600 text-sm">
|
<div class="tag-cloud font-iosevka text-gray-600 text-sm">
|
||||||
{{ $tags := .Site.Taxonomies.tags }}
|
{{ $topics := .Site.Taxonomies.topics }}
|
||||||
{{ range $tag, $pages := $tags }}
|
{{ range $tag, $pages := $topics }}
|
||||||
<a href="{{ "/tags/" | relLangURL }}{{ $tag | urlize }}" style="font-size: {{ add 1 (div (len $pages) 2) }}em;" data-count="{{ len $pages}}"
|
<a href="{{ "/topics/" | relLangURL }}{{ $tag | urlize }}" style="font-size: {{ add 1 (div (len $pages) 2) }}em;" data-count="{{ len $pages}}"
|
||||||
class="tag inline-block p-2 my-1 border border-gray-100 rounded-lg hover:bg-yellow-100 whitespace-nowrap">
|
class="tag inline-block p-2 my-1 border border-gray-100 rounded-lg hover:bg-yellow-100 whitespace-nowrap">
|
||||||
{{ $tag }}
|
{{ $tag }}
|
||||||
</a>
|
</a>
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
<p class="text-gray-800 italic">{{ $page.Params.location }}</p>
|
<p class="text-gray-800 italic">{{ $page.Params.location }}</p>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<p class="max-w-prose">{{ $page.Params.summary }}</p>
|
<p class="max-w-prose">{{ $page.Params.summary }}</p>
|
||||||
{{ partial "tags.html" $page }}
|
{{ partial "topics.html" $page }}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
{{- $tags := .tags -}}
|
{{- $topics := .topics -}}
|
||||||
{{- $limit := default 3 .limit -}}
|
{{- $limit := default 3 .limit -}}
|
||||||
{{- $currentPath := .page.RelPermalink -}}
|
{{- $currentPath := .page.RelPermalink -}}
|
||||||
|
|
||||||
{{- $related := where (where site.RegularPages "Type" "articles") "RelPermalink" "!=" $currentPath -}}
|
{{- $related := where (where site.RegularPages "Type" "articles") "RelPermalink" "!=" $currentPath -}}
|
||||||
{{- $matchingArticles := slice -}}
|
{{- $matchingArticles := slice -}}
|
||||||
|
|
||||||
{{/* First try to find articles with matching tags */}}
|
{{/* First try to find articles with matching topics */}}
|
||||||
{{- range $related -}}
|
{{- range $related -}}
|
||||||
{{- $matches := 0 -}}
|
{{- $matches := 0 -}}
|
||||||
{{- range .Params.tags -}}
|
{{- range .Params.topics -}}
|
||||||
{{- if in $tags . -}}
|
{{- if in $topics . -}}
|
||||||
{{- $matches = add $matches 1 -}}
|
{{- $matches = add $matches 1 -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@ -18,7 +18,7 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{/* If we found matching articles, sort by number of matching tags */}}
|
{{/* If we found matching articles, sort by number of matching topics */}}
|
||||||
{{- $finalArticles := slice -}}
|
{{- $finalArticles := slice -}}
|
||||||
{{- if gt (len $matchingArticles) 0 -}}
|
{{- if gt (len $matchingArticles) 0 -}}
|
||||||
{{- $finalArticles = first $limit (sort $matchingArticles "matches" "desc") -}}
|
{{- $finalArticles = first $limit (sort $matchingArticles "matches" "desc") -}}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{{- if .Params.tags }}
|
{{- if .Params.topics }}
|
||||||
<div class="flex flex-wrap gap-2 my-2 text-xs font-iosevka">
|
<div class="flex flex-wrap gap-2 my-2 text-xs font-iosevka">
|
||||||
{{- range .Params.tags }}
|
{{- range .Params.topics }}
|
||||||
<a href="{{ "tags/" | relURL }}{{ . | urlize }}"
|
<a href="{{ "topics/" | relURL }}{{ . | urlize }}"
|
||||||
class="px-3 py-1 border border-green-100 hover:bg-green-300 text-green-900 rounded no-underline">
|
class="px-3 py-1 border border-green-100 hover:bg-green-300 text-green-900 rounded no-underline">
|
||||||
{{ . }}
|
{{ . }}
|
||||||
</a>
|
</a>
|
Reference in New Issue
Block a user