Refactor and overhaul page metadata
This commit is contained in:
@@ -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 }}
|
Reference in New Issue
Block a user