Collection
Bases: BaseObject
Collection objects serve as a way to quickly process pages that have a portion of content that is similar or file driven.
Example:
from render_engine import Site, Collection
site = Site()
@site.collection
class BasicCollection(Collection):
content_path = "content/pages"
Collection pages MUST come from a content_path
and all be the same content type.
content_path
can be a string representing a path or URL, depending on the parser used.
Attributes:
archive_template: The template to use for the Archive pages.
content_path: The path to iterate over to generate pages.
content_type: Type[Page] = Page
Feed: Type[RSSFeed]
feed_title: str
include_suffixes: list[str] = ["*.md", "*.html"]
items_per_page: int | None
Parser: BasePageParser = BasePageParser
parser_extras: dict[str, Any]
required_themes: list[callable]
routes: list[str] = ["./"]
sort_by: str = "title"
sort_reverse: bool = False
title: str
template: str | None
archive_template str | None: The template to use for the archive pages.
Attributes
archives: typing.Generator[Archive, None, None]
property
Returns a Archive objects containing the pages from the content_path
.
Archives are an iterable and the individual pages are built shortly after the collection pages are built. This happens when Site.render is called.
Functions
get_page(content_path=None)
Returns the page Object for the specified Content Path
iter_content_path()
Iterate through in the collection's content path.
Passing Collection Variables to a Rendered Page
You can access attributes from the Collection
class inside all of its rendered pages.
To do so, you must create an attribute called template_vars
and populate it with a dictionary of key:value pairs.
In turn, each Page
in the collection will have a collection
attribute, similar to Page.template_vars
. The dictionary includes any additional attributes you have defined within the Collection
class.
from render_engine import Site, Collection
site = Site()
@site.collection
class BasicCollection(Collection):
content_path = "content/pages"
template_vars = {
"some_value": "42"
}
You can access some_value
in your template like this:
{{collection.some_value}}
Collection Archives
Collection archives are a special type of page that is automatically generated for each collection.
You can have archives generated by setting the has_archive
to True.
If you call archives
from your collection and neither has_archive
nor items_per_page
is set, an error will be raised and an archive containing all pages will be generated.
For more information, see Collection Archives.