Skip to content

Commit acd1187

Browse files
committed
Made READ NEXT Logic UNbaised | Added NEW BLOGS Section πŸ‘¨β€πŸ’»
1 parent 8b9e049 commit acd1187

1 file changed

Lines changed: 54 additions & 1 deletion

File tree

β€Žsrc/pages/blog/[...slug].astroβ€Ž

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ const { type } = props;
7979
let post: CollectionEntry<"blog"> | undefined;
8080
let Content: AstroComponentFactory | undefined;
8181
let relatedPostsToShow: CollectionEntry<"blog">[] = [];
82+
let latestPosts: CollectionEntry<"blog">[] = [];
8283
let url: URL | undefined;
8384
8485
// Variables for Tag View
@@ -93,9 +94,26 @@ if (type === "post") {
9394
9495
// Get related posts
9596
const allPosts = await getCollection("blog");
97+
const currentTags = post!.data.tags || [];
98+
9699
const relatedPosts = allPosts
97100
.filter((p) => p.slug !== post!.slug)
98-
.filter((p) => p.data.tags?.some((t) => post!.data.tags?.includes(t)));
101+
.map((p) => {
102+
const commonTags =
103+
p.data.tags?.filter((t) => currentTags.includes(t)) || [];
104+
return {
105+
post: p,
106+
score: commonTags.length,
107+
};
108+
})
109+
.filter((item) => item.score > 0)
110+
.sort((a, b) => {
111+
if (b.score !== a.score) return b.score - a.score; // Higher score first
112+
return (
113+
b.post.data.pubDate.valueOf() - a.post.data.pubDate.valueOf()
114+
); // Newer first
115+
})
116+
.map((item) => item.post);
99117
100118
// Get up to 4 related posts
101119
relatedPostsToShow = relatedPosts.slice(0, 4);
@@ -107,6 +125,12 @@ if (type === "post") {
107125
.slice(0, 4 - relatedPostsToShow.length);
108126
relatedPostsToShow = [...relatedPostsToShow, ...morePosts];
109127
}
128+
129+
// Get latest posts (excluding current and related)
130+
latestPosts = allPosts
131+
.filter((p) => p.slug !== post!.slug && !relatedPostsToShow.includes(p))
132+
.sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf())
133+
.slice(0, 4);
110134
} else {
111135
tag = props.tag;
112136
tagPosts = props.posts;
@@ -225,6 +249,35 @@ const components = {
225249
</div>
226250
)}
227251

252+
{latestPosts.length > 0 && (
253+
<div class="related-post-container">
254+
<h3 class="related-heading">Latest Blogs</h3>
255+
<div class="related-grid">
256+
{latestPosts.map((latestPost) => (
257+
<a
258+
href={`/blog/${latestPost.slug}`}
259+
class="related-card"
260+
>
261+
{latestPost.data.image && (
262+
<div class="related-image-wrapper">
263+
<OptimizedImage
264+
src={latestPost.data.image}
265+
alt={latestPost.data.title}
266+
class="related-image"
267+
/>
268+
</div>
269+
)}
270+
<div class="related-content">
271+
<h4 class="related-title">
272+
{latestPost.data.title}
273+
</h4>
274+
</div>
275+
</a>
276+
))}
277+
</div>
278+
</div>
279+
)}
280+
228281
<MultiplexAd />
229282
</article>
230283
</Layout>

0 commit comments

Comments
Β (0)