1111# 3rd party
1212from mkdocs .config .defaults import MkDocsConfig
1313from mkdocs .plugins import get_plugin_logger
14- from mkdocs .structure .pages import Page
1514
1615# package
1716from mkdocs_rss_plugin .constants import MKDOCS_LOGGER_NAME
1817from mkdocs_rss_plugin .integrations .theme_material_base import (
1918 IntegrationMaterialThemeBase ,
2019)
20+ from mkdocs_rss_plugin .models import MkdocsPageSubset
2121
2222# conditional
2323try :
2424 from material import __version__ as material_version
2525 from material .plugins .blog .plugin import BlogPlugin
26+ from material .plugins .blog .structure import Post
2627
2728except ImportError :
2829 material_version = None
@@ -131,7 +132,7 @@ def author_name_from_id(self, author_id: str) -> str:
131132 )
132133 return author_id
133134
134- def is_page_a_blog_post (self , mkdocs_page : Page ) -> bool :
135+ def is_page_a_blog_post (self , mkdocs_page : Post | MkdocsPageSubset ) -> bool :
135136 """Identifies if the given page is part of Material Blog.
136137
137138 Args:
@@ -140,6 +141,18 @@ def is_page_a_blog_post(self, mkdocs_page: Page) -> bool:
140141 Returns:
141142 bool: True if the given page is a Material Blog post.
142143 """
143- return Path (mkdocs_page .file .src_uri ).is_relative_to (
144- self .blog_plugin_cfg .config .blog_dir
145- )
144+ if self .IS_ENABLED and isinstance (mkdocs_page , Post ):
145+ logger .info (
146+ f"page '{ mkdocs_page .file .src_uri } ' identified as Material Blog post."
147+ )
148+ return True
149+ elif isinstance (mkdocs_page , MkdocsPageSubset ) and Path (
150+ mkdocs_page .src_uri
151+ ).is_relative_to (self .blog_plugin_cfg .config .blog_dir ):
152+ logger .info (
153+ f"page '{ mkdocs_page .src_uri } ' identified as Material Blog post "
154+ f"by src_uri matching."
155+ )
156+ return True
157+ else :
158+ return False
0 commit comments