mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2024-06-14 11:52:32 +03:00
Fixed non-deterministic order of categories in blog plugin
This commit is contained in:
parent
d43626a838
commit
058b32f2d3
@ -138,13 +138,17 @@ class BlogPlugin(BasePlugin[BlogConfig]):
|
||||
|
||||
# Generate views for archive
|
||||
if self.config.archive:
|
||||
views = self._generate_archive(config, files)
|
||||
self.blog.views.extend(views)
|
||||
self.blog.views.extend(
|
||||
self._generate_archive(config, files)
|
||||
)
|
||||
|
||||
# Generate views for categories
|
||||
if self.config.categories:
|
||||
views = self._generate_categories(config, files)
|
||||
self.blog.views.extend(views)
|
||||
self.blog.views.extend(sorted(
|
||||
self._generate_categories(config, files),
|
||||
key = lambda view: view.name,
|
||||
reverse = False
|
||||
))
|
||||
|
||||
# Generate pages for views
|
||||
if self.config.pagination:
|
||||
@ -573,10 +577,9 @@ class BlogPlugin(BasePlugin[BlogConfig]):
|
||||
self._save_to_file(file.abs_src_path, f"# {name}")
|
||||
file.inclusion = InclusionLevel.EXCLUDED
|
||||
|
||||
# Create and yield view - we don't explicitly set the title of
|
||||
# the view, so authors can override them in the page's content
|
||||
# Create and yield view
|
||||
if not isinstance(file.page, Archive):
|
||||
yield Archive(None, file, config)
|
||||
yield Archive(name, file, config)
|
||||
|
||||
# Assign post to archive
|
||||
assert isinstance(file.page, Archive)
|
||||
@ -610,10 +613,9 @@ class BlogPlugin(BasePlugin[BlogConfig]):
|
||||
self._save_to_file(file.abs_src_path, f"# {name}")
|
||||
file.inclusion = InclusionLevel.EXCLUDED
|
||||
|
||||
# Create and yield view - we don't explicitly set the title of
|
||||
# the view, so authors can override them in the page's content
|
||||
# Create and yield view
|
||||
if not isinstance(file.page, Category):
|
||||
yield Category(None, file, config)
|
||||
yield Category(name, file, config)
|
||||
|
||||
# Assign post to category and vice versa
|
||||
assert isinstance(file.page, Category)
|
||||
|
@ -212,10 +212,18 @@ class Excerpt(Page):
|
||||
# View
|
||||
class View(Page):
|
||||
|
||||
# Parent view
|
||||
parent: View | Section
|
||||
|
||||
# Initialize view
|
||||
def __init__(self, title: str | None, file: File, config: MkDocsConfig):
|
||||
super().__init__(title, file, config)
|
||||
self.parent: View | Section
|
||||
def __init__(self, name: str | None, file: File, config: MkDocsConfig):
|
||||
super().__init__(None, file, config)
|
||||
|
||||
# Initialize name of the view - note that views never pass a title to
|
||||
# the parent constructor, so the author can always override the title
|
||||
# that is used for rendering. However, for some purposes, like for
|
||||
# example sorting, we need something to compare.
|
||||
self.name = name
|
||||
|
||||
# Initialize posts and views
|
||||
self.posts: list[Post] = []
|
||||
|
@ -138,13 +138,17 @@ class BlogPlugin(BasePlugin[BlogConfig]):
|
||||
|
||||
# Generate views for archive
|
||||
if self.config.archive:
|
||||
views = self._generate_archive(config, files)
|
||||
self.blog.views.extend(views)
|
||||
self.blog.views.extend(
|
||||
self._generate_archive(config, files)
|
||||
)
|
||||
|
||||
# Generate views for categories
|
||||
if self.config.categories:
|
||||
views = self._generate_categories(config, files)
|
||||
self.blog.views.extend(views)
|
||||
self.blog.views.extend(sorted(
|
||||
self._generate_categories(config, files),
|
||||
key = lambda view: view.name,
|
||||
reverse = False
|
||||
))
|
||||
|
||||
# Generate pages for views
|
||||
if self.config.pagination:
|
||||
@ -573,10 +577,9 @@ class BlogPlugin(BasePlugin[BlogConfig]):
|
||||
self._save_to_file(file.abs_src_path, f"# {name}")
|
||||
file.inclusion = InclusionLevel.EXCLUDED
|
||||
|
||||
# Create and yield view - we don't explicitly set the title of
|
||||
# the view, so authors can override them in the page's content
|
||||
# Create and yield view
|
||||
if not isinstance(file.page, Archive):
|
||||
yield Archive(None, file, config)
|
||||
yield Archive(name, file, config)
|
||||
|
||||
# Assign post to archive
|
||||
assert isinstance(file.page, Archive)
|
||||
@ -610,10 +613,9 @@ class BlogPlugin(BasePlugin[BlogConfig]):
|
||||
self._save_to_file(file.abs_src_path, f"# {name}")
|
||||
file.inclusion = InclusionLevel.EXCLUDED
|
||||
|
||||
# Create and yield view - we don't explicitly set the title of
|
||||
# the view, so authors can override them in the page's content
|
||||
# Create and yield view
|
||||
if not isinstance(file.page, Category):
|
||||
yield Category(None, file, config)
|
||||
yield Category(name, file, config)
|
||||
|
||||
# Assign post to category and vice versa
|
||||
assert isinstance(file.page, Category)
|
||||
|
@ -212,10 +212,18 @@ class Excerpt(Page):
|
||||
# View
|
||||
class View(Page):
|
||||
|
||||
# Parent view
|
||||
parent: View | Section
|
||||
|
||||
# Initialize view
|
||||
def __init__(self, title: str | None, file: File, config: MkDocsConfig):
|
||||
super().__init__(title, file, config)
|
||||
self.parent: View | Section
|
||||
def __init__(self, name: str | None, file: File, config: MkDocsConfig):
|
||||
super().__init__(None, file, config)
|
||||
|
||||
# Initialize name of the view - note that views never pass a title to
|
||||
# the parent constructor, so the author can always override the title
|
||||
# that is used for rendering. However, for some purposes, like for
|
||||
# example sorting, we need something to compare.
|
||||
self.name = name
|
||||
|
||||
# Initialize posts and views
|
||||
self.posts: list[Post] = []
|
||||
|
Loading…
Reference in New Issue
Block a user