1
0
Fork 0
forked from q04/www.trr379.de
www.trr379.de/layouts/_default/contributor.html
Michał Szczepanik 1138f4d3b6 Display portrait also in absence of text content
Previously, a portrait would be shown only if the page had
content (beyond the front matter in markdown file). This became
apparent when we switched to pages generated from the Pool metadata
which only had the front matter if the Person's description was empty.

Given that this behavior goes back to ff7bd673 and 577d7810 it would
seem that it was an unintended consequence of extending the default
template, and we can safely extend it further.

In the html output, the portrait and text content share a section. It
seems that adding an "or" allows us to show the portrait regardless of
content presence while still avoiding an empty section.
2026-02-25 11:50:01 +00:00

86 lines
3.7 KiB
HTML

{{ define "main" }}
{{- $images := .Resources.ByType "image" }}
{{- $portrait := $images.Get .Params.portrait | default ($images.GetMatch "*portrait*") | default ($images.GetMatch "*thumbnail*") }}
<header>
{{ if .Params.showBreadcrumbs | default (.Site.Params.list.showBreadcrumbs | default false) }}
{{ partial "breadcrumbs.html" . }}
{{ end }}
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">{{ if .Param "name-title"}}{{ .Param "name-title" }}&nbsp;{{ end }}{{ .Title }}</h1>
{{ with .GetTerms "roles" }}
{{ range . }}
<span class="ms-1 rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
<a href="{{ .Permalink }}">{{ .Title }}</a>
</span>
{{ end }}
{{ end }}
</header>
{{ if .Param "affiliation" }}
<section class="mt-1 flex max-w-full flex-col dark:prose-invert lg:flex-row">
<p>{{ .Param "affiliation" }}</p>
</section>
{{ end }}
{{ if .Param "orcid" }}
<section class="prose mt-0 flex max-w-full flex-col dark:prose-invert lg:flex-row">
<p><a href="https://orcid.org/{{ .Param "orcid" }}" target="_blank" rel="noreferrer">
{{ partial "icon.html" "orcid" }}{{ .Param "orcid" }}
</a></p>
</section>
{{ end }}
{{ if .Param "seealso-link" }}
<section class="prose mt-0 flex max-w-full flex-col dark:prose-invert lg:flex-row">
<p><a href="{{ .Param "seealso-link" }}" target="_blank" rel="noreferrer">
{{ partial "icon.html" "circle-info" }}{{ .Param "seealso-text" | default "Homepage" }}
</a></p>
</section>
{{ end }}
{{ if or .Content $portrait }}
<section class="prose mt-0 flex max-w-full flex-col dark:prose-invert lg:flex-row">
{{ with $portrait }}
<div style="float:left;width:200px;margin-right:1em" class="mt-4">
{{ $altText := $.Params.portraitAlt | default $.Page.Title }}
{{ $class := "max-w-4 mb-6 -mt-4 rounded-md" }}
{{ $webp := $.Page.Site.Params.enableImageWebp | default true }}
{{ partial "picture.html" (dict "img" . "alt" $altText "class" $class "lazy" false "webp" $webp) }}
</div>
{{ end }}
<div class="pt-4 min-h-0 min-w-0 max-w-prose grow">
{{ .Content | emojify }}
</div>
</section>
{{ end }}
<h2 class="mt-0 text-2xl font-extrabold text-neutral-900 dark:text-neutral">Related content</h2>
<section>
{{ if .Data.Pages }}
<section>
{{ if $.Params.groupByYear | default ($.Site.Params.list.groupByYear | default true) }}
{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
<h2 class="mt-12 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">
{{ .Key }}
</h2>
<hr class="w-36 border-dotted border-neutral-400" />
{{ range .Pages }}
{{ partial "article-link.html" . }}
{{ end }}
{{ end }}
{{ else }}
{{ range (.Paginate (.Pages.GroupBy "Type")).PageGroups }}
<h2 class="mt-12 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">
{{ .Key | title }}
</h2>
<hr class="w-36 border-dotted border-neutral-400" />
{{ range .Pages.ByParam "sortkey" }}
{{ partial "article-link.html" . }}
{{end}}
{{ end }}
{{ end }}
</section>
{{ partial "pagination.html" . }}
{{ else }}
<section class="prose mt-10 dark:prose-invert">
<p class="border-t py-8">
<em>{{ i18n "list.no_articles" | emojify }}</em>
</p>
</section>
{{ end }}
</section>
{{ end }}