diff --git a/website/blog/templates/blog/blog_post_count_summary_item.html b/website/blog/templates/blog/blog_post_count_summary_item.html
new file mode 100644
index 0000000..c31cf6e
--- /dev/null
+++ b/website/blog/templates/blog/blog_post_count_summary_item.html
@@ -0,0 +1,8 @@
+{% load wagtailcore_tags wagtailadmin_tags %}
+
+
+ {% icon name="edit" %}
+
+ {{ posts }} Posts
+
+
diff --git a/website/blog/wagtail_hooks.py b/website/blog/wagtail_hooks.py
index 4126563..4f22cc3 100644
--- a/website/blog/wagtail_hooks.py
+++ b/website/blog/wagtail_hooks.py
@@ -2,8 +2,9 @@ from django.http.request import HttpRequest
from django.urls import reverse
from wagtail import hooks
from wagtail.admin.menu import MenuItem
+from wagtail.admin.site_summary import SummaryItem
-from .models import BlogPostTagListPage
+from .models import BlogPostListPage, BlogPostTagListPage
class BlogPostTagsMenuItem(MenuItem):
@@ -26,6 +27,26 @@ class BlogPostTagsMenuItem(MenuItem):
return bool(self.url)
+class BlogPostCountSummaryItem(SummaryItem):
+ template_name = "blog/blog_post_count_summary_item.html"
+
+ def is_shown(self) -> bool:
+ return BlogPostListPage.objects.exists()
+
+ def get_context_data(self, parent_context: dict) -> dict:
+ context = super().get_context_data(parent_context)
+ list_page = BlogPostListPage.objects.get()
+ context["list_page"] = list_page
+ context["posts"] = list_page.get_listing_pages().count()
+
+ return context
+
+
@hooks.register("register_admin_menu_item")
def register_blog_post_tags_menu_item() -> MenuItem:
return BlogPostTagsMenuItem()
+
+
+@hooks.register("construct_homepage_summary_items")
+def register_blog_post_count_summary_item(request: HttpRequest, panels: list) -> None:
+ panels.append(BlogPostCountSummaryItem(request))