41 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {{- $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 -}}
 | |
| <div class="related-articles flex flex-wrap gap-4">
 | |
|     <h2 class="title text-3xl font-bold">Related Articles</h2>
 | |
|     <div class="wompum-container wompum-container--no-gap">
 | |
|         <div class="wompum-grid" data-text="Related Articles" data-columns="8" data-rows="1"></div>
 | |
|     </div>
 | |
|     <ul class="flex flex-col gap-4 w-full">
 | |
|       {{ partial "article-list" (dict "Pages" $finalArticles) }}
 | |
|     </ul>
 | |
| </div>
 | |
| {{- end -}}
 |