{{- $topics := .topics -}} {{- $limit := default 3 .limit -}} {{- $currentPath := .page.RelPermalink -}} {{- $related := where (where site.RegularPages "Type" "articles") "RelPermalink" "!=" $currentPath -}} {{- $matchingArticles := slice -}} {{/* First try to find articles with matching topics */}} {{- range $related -}} {{- $matches := 0 -}} {{- range .Params.topics -}} {{- if in $topics . -}} {{- $matches = add $matches 1 -}} {{- end -}} {{- end -}} {{- if gt $matches 0 -}} {{- $matchingArticles = $matchingArticles | append (dict "page" . "matches" $matches) -}} {{- end -}} {{- end -}} {{/* If we found matching articles, sort by number of matching topics */}} {{- $finalArticles := slice -}} {{- if gt (len $matchingArticles) 0 -}} {{- $finalArticles = first $limit (sort $matchingArticles "matches" "desc") -}} {{- else -}} {{/* Fallback to showing other articles sorted by date */}} {{- $finalArticles = first $limit (sort $related "Date" "desc") -}} {{- end -}} {{- if gt (len $finalArticles) 0 -}} {{- end -}}