1
0
Fork 0
forked from q04/www.trr379.de
www.trr379.de/layouts/_default/contributor.html
Michał Szczepanik de00e8a136 Change default names for contributor's portrait
Previous behavior was that the value of .Params.portrait (defined in
markdown front matter) was treated as a glob pattern. If
Params.portrait was nil, "*thumbnail*" would be used by default.

This commit changes the behavior to use the following resolution
order: .Params.portrait (verbatim), "*portrait*", "*thumbnail*".

In current practice, only two names are used for images:
"portrait.(jpg|webp)" and "thumbnail.(jpg|webp)". Usually, portrait is
larger and thumbnail is cropped. Most contributor pages declare
"portrait.(jpg|webp)" explicitly in the front matter.

If current naming patterns remain in use, this change should make
declaring .Params.portrait basically obsolete, unless a really custom
file name is used (in such case, the manual override remains
available). As far as defaults go, a larger image is likely preferred
on a "profile" page.

This should also help auto-generated pages, allowing us to do so also
without storing information about the portrait in the metadata pool.

Note: default is alias of https://gohugo.io/functions/compare/default/
2026-02-12 04:29:14 +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 .Content }}
<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 }}