Refactor and overhaul page metadata

master
Will Faught 2 years ago
parent 6f02b083f9
commit 061baff39e

@ -296,7 +296,7 @@ paige:
date:
class: "text-center text-secondary" # Default is "text-center text-secondary"
format: ":date_long" # Default is ":date_long"
show: false # Default is false
hide: true # Default is true
date_header:
class: "h5 text-center" # Month and year header class attribute
hide: false # Default is false
@ -876,12 +876,11 @@ For example, the default layouts
`home.html`, `list.html`, `single.html`, `taxonomy.html`, and `term.html`
include the partial template `paige/article.html`.
`paige/article.html` includes the partial templates `paige/metadata.html`, `paige/toc.html`, and `paige/content.html`.
`paige/metadata.html` includes the partial templates `paige/title.html`, `paige/description.html`, and `paige/other.html`.
To change the page title for those default layouts, change `paige/title.html`.
To change the page title for those default layouts, change `paige/metadata.html`.
To change the page title for `single.html`,
replace the use of `paige/article.html` in `single.html` with the use of
`paige/title.html`, `paige/description.html`, `paige/other.html`, `paige/toc.html`, and `paige/content.html`,
then replace that use of `paige/title.html` with your own design.
`paige/metadata.html`, `paige/toc.html`, and `paige/content.html`,
then replace that use of `paige/metadata.html` with your own design.
### Define

@ -1,39 +0,0 @@
{{ $page := . }}
{{ $authors := cond ($page.Param "paige.page.authors.hide" | not) (partial "paige/func-authors.html" $page) "" }}
{{ $authorsclass := $page.Param "paige.page.authors.class" | default "text-center text-secondary" }}
{{ $categories := cond ($page.Param "paige.page.terms.show" | not) slice ($page.Params.categories | default slice) | sort | uniq }}
{{ $date := cond ($page.Param "paige.page.date.hide" | not) $page.PublishDate "" }}
{{ $dateclass := $page.Param "paige.page.date.class" | default "text-center text-secondary" }}
{{ $gap := "mb-0" }}
{{ $readingtime := $page.Param "paige.page.reading_time.show" }}
{{ $readingtimeclass := $page.Param "paige.page.reading_time.class" | default "text-center text-secondary" }}
{{ $tags := cond ($page.Param "paige.page.terms.show" | not) slice ($page.Params.tags | default slice) | sort | uniq }}
{{ $termsinnerclass := $page.Param "paige.page.terms.inner_class" | default "badge text-bg-secondary text-decoration-none" }}
{{ $termsouterclass := $page.Param "paige.page.terms.outer_class" | default "text-center" }}
{{ if or $categories $tags }}
<p {{ with $termsouterclass }} class="{{ . }}" {{ end }}>
{{ $terms := slice }}
{{ range $categories }}
{{ $terms = $terms | append (dict "name" . "url" (lower . | printf "categories/%v/" | relLangURL)) }}
{{ end }}
{{ range $tags }}
{{ $terms = $terms | append (dict "name" . "url" (lower . | printf "tags/%v/" | relLangURL)) }}
{{ end }}
{{ range sort $terms "name" }}
<a {{ with $termsinnerclass }} class="{{ . }}" {{ end }} href="{{ .url | safeURL }}">{{ .name }}</a>
{{ end }}
</p>
{{ end }}
{{ with $authors }}
<p class="{{ if or $date $readingtime }} {{ $gap }} {{ end }} {{ $authorsclass }}">{{ . }}</p>
{{ end }}
{{ with $date }}
<p class="{{ if $readingtime }} {{ $gap }} {{ end }} {{ $dateclass }}">
<time datetime="{{ .Format `2006-01-02` }}">{{ time.Format ($page.Param "paige.page.date.format" | default ":date_long") . }}</time>
</p>
{{ end }}
{{ if $readingtime }}
<p class="{{ $readingtimeclass }}">{{ $page.ReadingTime }} {{ i18n "paige_minutes" $page.ReadingTime }}</p>
{{ end }}

@ -1,8 +0,0 @@
{{ $page := . }}
{{ $class := $page.Param "paige.page.description.class" | default "lead text-center" }}
{{ $description := cond ($page.Param "paige.page.description.hide" | not) ($page.Description | markdownify) "" }}
{{ with $description }}
<p class="{{ $class }}">{{ . }}</p>
{{ end }}

@ -1,7 +1,63 @@
{{ $page := . }}
<section class="paige-metadata w-100">
{{ partial "paige/title.html" $page }}
{{ partial "paige/description.html" $page }}
{{ partial "paige/about.html" $page }}
{{ $authors := cond ($page.Param "paige.page.authors.hide" | not) (partial "paige/func-authors.html" $page) "" }}
{{ $authorsclass := $page.Param "paige.page.authors.class" | default "text-center text-secondary" }}
{{ $categories := cond ($page.Param "paige.page.terms.show" | not) slice ($page.Params.categories | default slice) | sort | uniq }}
{{ $date := cond ($page.Param "paige.page.date.hide" | not) $page.PublishDate "" }}
{{ $dateclass := $page.Param "paige.page.date.class" | default "text-center text-secondary" }}
{{ $dateformat := $page.Param "paige.page.date.format" | default ":date_long" }}
{{ $description := cond ($page.Param "paige.page.description.hide" | not) ($page.Description | markdownify) "" }}
{{ $descriptionclass := $page.Param "paige.page.description.class" | default "lead text-center" }}
{{ $nogap := "mb-0" }}
{{ $readingtime := cond ($page.Param "paige.page.reading_time.show" | not) "" $page.ReadingTime }}
{{ $readingtimeclass := $page.Param "paige.page.reading_time.class" | default "text-center text-secondary" }}
{{ $sectionclass := "paige-metadata w-100" }}
{{ $tags := cond ($page.Param "paige.page.terms.show" | not) slice ($page.Params.tags | default slice) | sort | uniq }}
{{ $termsinnerclass := $page.Param "paige.page.terms.inner_class" | default "badge text-bg-secondary text-decoration-none" }}
{{ $termsouterclass := $page.Param "paige.page.terms.outer_class" | default "text-center" }}
{{ $title := cond ($page.Param "paige.page.title.hide" | not) ($page.Title | markdownify) "" }}
{{ $titleclass := $page.Param "paige.page.title.class" | default "display-5 fw-bold text-center" }}
{{ $titlelink := $page.Params.link }}
{{ $titlepage := $page.RelPermalink }}
<section {{ with $sectionclass }} class="{{ . }}" {{ end }}>
{{ with $title }}
<h1 {{ with $titleclass }} class="{{ . }}" {{ end }}>{{ with $titlelink }}<a href="{{ . }}">{{ . }}</a>{{ else }}{{ . }}{{ end }}{{ if $page.Scratch.Get "paige_show_full_pages" }}<a aria-label="Link to this section" class="paige-header-link" href="{{ $titlepage }}">#</a>{{ end }}</h1>
{{ end }}
{{ with $description }}
<p {{ with $descriptionclass }} class="{{ . }}" {{ end }}>{{ . }}</p>
{{ end }}
{{ if or $categories $tags }}
<p {{ with $termsouterclass }} class="{{ . }}" {{ end }}>
{{ $terms := slice }}
{{ range $categories }}
{{ $terms = $terms | append (dict "name" . "url" (lower . | printf "categories/%v/" | relLangURL)) }}
{{ end }}
{{ range $tags }}
{{ $terms = $terms | append (dict "name" . "url" (lower . | printf "tags/%v/" | relLangURL)) }}
{{ end }}
{{ range sort $terms "name" }}
<a {{ with $termsinnerclass }} class="{{ . }}" {{ end }} href="{{ .url | safeURL }}">{{ .name }}</a>
{{ end }}
</p>
{{ end }}
{{ with $authors }}
<p {{ if or $authorsclass $date $readingtime }} class="{{ if or $date $readingtime }} {{ $nogap }} {{ end }} {{ with $authorsclass }} {{ . }} {{ end }}" {{ end }}>{{ . }}</p>
{{ end }}
{{ with $date }}
<p {{ if or $dateclass $readingtime }} class="{{ if $readingtime }} {{ $nogap }} {{ end }} {{ with $dateclass }} {{ . }} {{ end }}" {{ end }}>
<time datetime="{{ .Format `2006-01-02` }}">{{ time.Format $dateformat . }}</time>
</p>
{{ end }}
{{ with $readingtime }}
<p {{ with $readingtimeclass }} class="{{ . }}" {{ end }}>{{ . }} {{ i18n "paige_minutes" . }}</p>
{{ end }}
</section>

@ -1,12 +1,14 @@
{{ $page := . }}
{{ $class := "mb-0 text-center" }}
{{ if $page.Pages }}
{{ if $page.Param "paige.show_full_pages" }}
{{ $p := $page.Paginate $page.Pages }}
<section>
{{ range $p.Pages }}
{{ $page.Scratch.Set "paige_show_full_pages" true }}
{{ partial "paige/article.html" $page }}
{{ partial "paige/article.html" . }}
{{ end }}
</section>
{{ if or $p.HasPrev $p.HasNext }}
@ -24,79 +26,95 @@
<h2 class="{{ $.Param `paige.page_list.date_header.class` | default `h5 text-center` }}">{{ .Key }}</h2>
{{ end }}
{{ range .Pages }}
{{ $class := "text-center" }}
{{ $authors := cond ($page.Param "paige.page_list.authors.show" | not) "" (partial "paige/func-authors.html" .) }}
{{ $authorsclass := $page.Param "paige.page_list.authors.class" | default (print $class " text-secondary") }}
{{ $categories := cond ($page.Param "paige.page_list.categories.show" | not) slice (.Params.categories | default slice) | sort | uniq }}
{{ $categoriesclass := $page.Param "paige.page_list.categories.class" | default "badge text-bg-secondary text-decoration-none" }}
{{ $categories := cond ($page.Param "paige.page_list.terms.show" | not) slice (.Params.categories | default slice) | sort | uniq }}
{{ $date := cond ($page.Param "paige.page_list.date.show" | not) "" .PublishDate }}
{{ $dateclass := $page.Param "paige.page_list.date.class" | default (print $class " text-secondary") }}
{{ $dateformat := $page.Param "paige.page_list.date.format" | default ":date_long" }}
{{ $description := cond ($page.Param "paige.page_list.description.hide" | not) (.Description | markdownify) "" }}
{{ $descriptionclass := $page.Param "paige.page_list.description.class" | default $class }}
{{ $draft := .Draft }}
{{ $expired := and .ExpiryDate (lt .ExpiryDate now) }}
{{ $flags := slice }}
{{ $gap := "mb-0" }}
{{ $readingtime := $page.Param "paige.page_list.reading_time.show" }}
{{ $readingtimeclass := $page.Param "paige.page_list.reading_time.class" | default "text-center text-secondary" }}
{{ $future := and .PublishDate (gt .PublishDate now) }}
{{ $modified := and .PublishDate .Lastmod (lt .PublishDate .Lastmod) }}
{{ $readingtime := cond ($page.Param "paige.page_list.reading_time.show" | not) "" .ReadingTime }}
{{ $readingtimeclass := $page.Param "paige.page_list.reading_time.class" | default (print $class " text-secondary") }}
{{ $sectionclass := $page.Param "paige.page_list.section.class" | default "mb-3 w-100" }}
{{ $summary := cond ($page.Param "paige.page_list.summary.show" | not) "" (.Summary | strings.TrimPrefix "<p>" | strings.TrimSuffix "</p>") }}
{{ $summaryclass := $page.Param "paige.page_list.summary.class" | default $class }}
{{ $tags := cond ($page.Param "paige.page_list.tags.show" | not) slice (.Params.tags | default slice) | sort | uniq }}
{{ $tagsclass := $page.Param "paige.page_list.tags.class" | default "badge text-bg-secondary text-decoration-none" }}
{{ $tags := cond ($page.Param "paige.page_list.terms.show" | not) slice (.Params.tags | default slice) | sort | uniq }}
{{ $termsinnerclass := $page.Param "paige.page_list.terms.inner_class" | default "badge text-bg-secondary text-decoration-none" }}
{{ $termsouterclass := $page.Param "paige.page_list.terms.outer_class" | default $class }}
{{ $title := cond ($page.Param "paige.page_list.title.hide" | not) (.Title | markdownify) "" }}
{{ $titleclass := $page.Param "paige.page_list.title.class" | default $class }}
{{ $titlelink := .RelPermalink }}
{{ if .Draft }}
{{ if $draft }}
{{ $flags = $flags | append "paige-draft" "paige-unpublished" }}
{{ end }}
{{ if and .ExpiryDate (lt .ExpiryDate now) }}
{{ if $expired }}
{{ $flags = $flags | append "paige-expired" "paige-unpublished" }}
{{ end }}
{{ if and .PublishDate (gt .PublishDate now) }}
{{ if $future }}
{{ $flags = $flags | append "paige-future" "paige-unpublished" }}
{{ end }}
{{ if and .PublishDate .Lastmod (lt .PublishDate .Lastmod) }}
{{ if $modified }}
{{ $flags = $flags | append "paige-modified" }}
{{ end }}
{{ $flags = delimit ($flags | sort | uniq) " " }}
{{ $sectionclass = delimit (split $sectionclass " " | append $flags | sort | uniq) " " }}
<p class="{{ if or $description $authors $date $readingtime $categories $tags $summary }} {{ $gap }} {{ end }} {{ with $flags }} {{ . }} {{ end }} {{ $titleclass }}">
<a href="{{ .RelPermalink }}">{{ $title | markdownify }}</a>
</p>
{{ with $description }}
<p class="{{ if or $authors $date $readingtime $categories $tags $summary }} {{ $gap }} {{ end }} {{ $descriptionclass }}">{{ . }}</p>
{{ end }}
{{ with $authors }}
<p class="{{ if or $date $readingtime $categories $tags $summary }} {{ $gap }} {{ end }} {{ $authorsclass }}">{{ . }}</p>
{{ end }}
{{ if $date }}
<p class="{{ if or $readingtime $categories $tags $summary }} {{ $gap }} {{ end }} {{ $dateclass }}">
<time datetime="{{ $date.Format `2006-01-02` }}">{{ time.Format (.Param "paige.page_list.date.format" | default ":date_long") $date }}</time>
</p>
{{ end }}
{{ if $readingtime }}
<p class="{{ if or $categories $tags $summary }} {{ $gap }} {{ end }} {{ $readingtimeclass }}">{{ .ReadingTime }} {{ i18n "paige_minutes" .ReadingTime }}</p>
{{ end }}
{{ with $categories }}
<p class="{{ if or $tags $summary }} {{ $gap }} {{ end }} text-center">
{{ range . }}
<a class="{{ $categoriesclass }}" href="{{ relLangURL (printf `categories/%v/` .) | safeURL }}">{{ . }}</a>
{{ end }}
</p>
{{ end }}
{{ with $tags }}
<p class="{{ if $summary }} {{ $gap }} {{ end }} text-center">
{{ range . }}
<a class="{{ $tagsclass }}" href="{{ relLangURL (printf `tags/%v/` .) | safeURL }}">{{ . }}</a>
{{ end }}
</p>
{{ end }}
{{ if $summary }}
<p class="{{ $summaryclass }}">{{ $summary }}</p>
{{ end }}
<section {{ with $sectionclass }} class="{{ . }}" {{ end }}>
{{ with $title }}
<p {{ with $titleclass }} class="{{ . }}" {{ end }}><a href="{{ $titlelink }}">{{ . }}</a></p>
{{ end }}
{{ with $description }}
<p {{ with $descriptionclass }} class="{{ . }}" {{ end }}>{{ . }}</p>
{{ end }}
{{ if or $categories $tags }}
<p {{ with $termsouterclass }} class="{{ . }}" {{ end }}>
{{ $terms := slice }}
{{ range $categories }}
{{ $terms = $terms | append (dict "name" . "url" (lower . | printf "categories/%v/" | relLangURL)) }}
{{ end }}
{{ range $tags }}
{{ $terms = $terms | append (dict "name" . "url" (lower . | printf "tags/%v/" | relLangURL)) }}
{{ end }}
{{ range sort $terms "name" }}
<a {{ with $termsinnerclass }} class="{{ . }}" {{ end }} href="{{ .url | safeURL }}">{{ .name }}</a>
{{ end }}
</p>
{{ end }}
{{ with $authors }}
<p {{ with $authorsclass }} class="{{ . }}" {{ end }}>{{ . }}</p>
{{ end }}
{{ with $date }}
<p {{ with $dateclass }} class="{{ . }}" {{ end }}>
<time datetime="{{ .Format `2006-01-02` }}">{{ time.Format $dateformat . }}</time>
</p>
{{ end }}
{{ with $readingtime }}
<p {{ with $readingtimeclass }} class="{{ . }}" {{ end }}>{{ . }} {{ i18n "paige_minutes" . }}</p>
{{ end }}
{{ with $summary }}
<p {{ with $summaryclass }} class="{{ . }}" {{ end }}>{{ . }}</p>
{{ end }}
</section>
{{ end }}
{{ end }}
</section>

@ -1,8 +0,0 @@
{{ $page := . }}
{{ $class := $page.Param "paige.page.title.class" | default "display-5 fw-bold text-center" }}
{{ $title := cond ($page.Param "paige.page.title.hide" | not) ($page.Title | markdownify) "" }}
{{ if $title }}
<h1 class="{{ $class }}">{{ with $page.Params.link }}<a href="{{ . }}">{{ $title }}</a>{{ else }}{{ $title }}{{ end }}{{ if $page.Scratch.Get "paige_show_full_pages" }}<a aria-label="Link to this section" class="paige-header-link" href="{{ $page.RelPermalink }}">#</a>{{ end }}</h1>
{{ end }}
Loading…
Cancel
Save