diff --git a/shared/models.py b/shared/models.py
index 1025dc97e04115990e6a4fd4d0b1a67ddc7c018c..9d5de087a8a6b87daf5ad045a596834bb4b32929 100644
--- a/shared/models.py
+++ b/shared/models.py
@@ -4,8 +4,8 @@ from functools import reduce
 
 from django.apps import apps
 from django.db import models
-from django.db.models import F, Q
-from django.db.models.expressions import F, Value
+from django.db.models import Q
+from django.db.models.expressions import ExpressionWrapper, F, Value
 from django.db.models.functions import Coalesce
 from django.utils import timezone
 from modelcluster.fields import ParentalKey, ParentalManyToManyField
@@ -313,7 +313,10 @@ class ArticlesMixin(models.Model):
     def evaluate_page_query(self, results):
         return list(
             reduce(
-                lambda unique, item: unique | {f"{item['union_page_ptr_id']}": item},
+                lambda unique, item: unique
+                if item["union_page_ptr_id"] in unique
+                and "union_shared_from_id" in item
+                else unique | {f"{item['union_page_ptr_id']}": item},
                 list(results),
                 {},
             ).values()
@@ -564,11 +567,15 @@ class ArticlesMixin(models.Model):
         articles: list,
         tags_model_query=None,
     ):
+        own_page_type = self.determine_page_type()
         get_ids_by_page_type = lambda page_type: list(
             map(
                 lambda article: article.page_ptr.id,
                 filter(
-                    lambda article: article.shared_type == page_type,
+                    lambda article: article.shared_type == page_type
+                    or (
+                        article.shared_type is None and own_page_type.value == page_type
+                    ),
                     articles,
                 ),
             )