Skip to content

Conversation

@goncalotomas
Copy link
Contributor

Previously, Collections were the only way of listing pages, which is required for building index pages. Looking after the source code after a while made me realize that I really value simplicity, and Collections were too much logic in a single mechanism, especially for simple use cases.

The question raised in #12 is pertinent: it shouldn't be that complicated to list pages, so these changes add a function that allows listing pages with a simple filter and sort option.

How it works

Griffin works in two stages: parsing, where files are read and split into a {frontmatter, content} pair, and rendering, which is when files are written to the output directory. This logic has been extended a bit to also store the path the file comes from relative to the root directory, so that it is searchable.

The frontmatter/metadata is really all that's needed for listing pages, so we're now storing the parsed file metadata in ETS.

In the rendering stage, we now inject a @list_pages assign as a function wrapping GriffinSSG.list_pages/3 which enables listing pages from layouts.

@goncalotomas goncalotomas self-assigned this Mar 9, 2025
@goncalotomas goncalotomas merged commit e36939d into main Mar 9, 2025
1 check passed
@goncalotomas goncalotomas deleted the list-pages-function branch March 9, 2025 21:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants