staticsite icon indicating copy to clipboard operation
staticsite copied to clipboard

page.name for ArchivePage is documented & used, but not available

Open DonKult opened this issue 4 years ago • 3 comments

In example/demo/content/tags.taxonomy the template title & description of the archive use page.name and the refdoc documents its existence, but it seems to have disappeared at some point (I am at least reasonably sure it existed last year).

Adding to ArchivePage in staticsite/features/syndication.py (I would have kinda expected it to be in taxonomy.py) a to_dict method "stolen" from the CategoryPage and self.name = self.created_from.to_dict().get("name") to the constructor solves this small problem, but I fully expect there to be a better/cleaner way.

Related: I see that lib/blog.html template uses page.created_from.…, so perhaps that should be used in the templates instead of page.name, but it isn't documented.

DonKult avatar Oct 16 '20 21:10 DonKult

I agree it's surprising that the tag archive is created by syndication.py. The general idea is that once there's a page that contains a collection of pages (in meta["pages"]), syndication can automatically add RSS/Atom feeds and archives

spanezz avatar Aug 27 '21 12:08 spanezz

I see that page.name exists for taxonomy pages only. In archive pages, using page.created_from.name would work, except that TaxonomyPage.__init__() helpfully sets template_title to something else, which seems to take priority.

Untangling this might need a refactoring of staticsite, introducing a clear division between populating the interconnected page structure and populating page metadata. Such a refactoring would be a good thing to do, not just for this issue

spanezz avatar Aug 27 '21 12:08 spanezz

Such a refactoring has now been done in the refactor branch :tada:

spanezz avatar Dec 16 '22 20:12 spanezz