From b9b2a6c1f21f8b7f5a069e8057eea9eaa31c6a17 Mon Sep 17 00:00:00 2001 From: folx bot Date: Sat, 29 Aug 2026 21:27:58 +0200 Subject: [PATCH] Clanek: Weitere Artikel brez istega izvajalca (tudi ne istega kot clanek) --- client/src/pages/article.tsx | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/client/src/pages/article.tsx b/client/src/pages/article.tsx index 9293ad4..dc740d5 100644 --- a/client/src/pages/article.tsx +++ b/client/src/pages/article.tsx @@ -15,6 +15,7 @@ import DOMPurify from "dompurify"; import ShareButtons from "@/components/share-buttons"; import { useEffect, useMemo } from "react"; import { useFocalPoints, objectPositionFor } from "@/lib/focal"; +import { artistGroup } from "@/lib/artists"; const ALLOWED_IFRAME_DOMAINS = [ "iframe.mediadelivery.net", @@ -57,12 +58,35 @@ function ArticleSkeleton() { ); } -function RelatedArticles({ currentSlug }: { currentSlug: string }) { +function RelatedArticles({ currentSlug, currentTitle }: { currentSlug: string; currentTitle?: string }) { const { data: articles } = useQuery({ queryKey: ["/api/articles/popular"], }); - const filtered = articles?.filter((a) => a.slug !== currentSlug); + // Pod clankom ne sme stati clanek o istem izvajalcu (niti o istem, kot je + // clanek sam) - bralcu izgleda kot podvojitev. + const filtered = useMemo(() => { + const list = (articles || []).filter((a) => a.slug !== currentSlug); + const g0 = artistGroup(currentTitle || ""); + const seen = new Set(g0 ? [g0] : []); + const out: Article[] = []; + for (const a of list) { + const g = artistGroup(a.title || ""); + if (g && seen.has(g)) continue; + if (g) seen.add(g); + out.push(a); + if (out.length >= 3) break; + } + if (out.length < 3) { + for (const a of list) { + if (out.indexOf(a) < 0) { + out.push(a); + if (out.length >= 3) break; + } + } + } + return out; + }, [articles, currentSlug, currentTitle]); const focalPoints = useFocalPoints(); if (!filtered || filtered.length === 0) return null; @@ -436,7 +460,7 @@ export default function ArticlePage() { - +