{{/* Handle both calling conventions: dict with .Page/.side or direct page */}} {{ $page := . }} {{ $side := "left" }} {{ if reflect.IsMap . }} {{ $page = .Page }} {{ $side = .side | default "left" }} {{ end }} {{ $articleType := $page.Params.type | default "life" }} {{ $typeConfig := $page.Site.Params.articleTypes }} {{ $typeData := index $typeConfig $articleType }} {{ $excerpt := $page.Params.excerpt | default $page.Description | default $page.Summary }} {{ $imageURL := "" }} {{ $useDefaultThumbnail := false }} {{ if $page.Params.image }} {{ $resource := $page.Resources.GetMatch $page.Params.image }} {{ if $resource }} {{ $imageURL = $resource.RelPermalink }} {{ else }} {{ $imageURL = $page.Params.image }} {{ end }} {{ else }} {{ $useDefaultThumbnail = true }} {{ end }}
  • {{/* Decorative connector line */}} {{/* Node on spine */}}
    {{/* Thumbnail */}} {{/* Text body */}}
    {{/* Pinned badge */}} {{ if $page.Params.pinned }}
    ๐Ÿ“Œ {{ i18n "pinned" | default "PINNED" }}
    {{ end }} {{/* Type + date meta row */}}
    {{ i18n $articleType | upper }}
    {{/* Title */}}

    {{ $page.Title }}

    {{/* Excerpt */}} {{ if $excerpt }}

    {{ $excerpt | plainify }}

    {{ end }} {{/* CTA */}} {{ i18n "readMore" }}