Skip to content

Custom Collection

Custom collections are a way for you to create collections for distribution.

If you have something that could be represented as a group of individual pages, then potentially you could make a custom collection.

Creating a Custom Collection

Install the render_engine package

You will need to ensure that you're using render_engine version 2023.1.3 or higher

pip install render_engine

Creating your Collection Object

Import the collection class from render_engine and create your custom Collection object

from render_engine.collection import Collection

class MyCustomCollection(Collection):
    pass

Collection Attributes and Methods

While you can set any of the attributes and override any methods on the Collection object, there are a few exposed specifically for custom collection types.

Attributes

content_path: str | Iterable: Perhaps most important, this is the iterable that will be used to create the collection object. iter_content_path is the method that will be used to parse the content path. This method is called in the __init__ method of the Collection object.

content_type: Type[Page]: Some custom collections may want to create a different type of Page object. This attribute allows you to set the type of page that will be created for each item in the collection.

Feed: Type[RSSFeed]: The type of feed that will be created for the collection. By default, this is the RSSFeed class, but you can set this to any class that inherits from the RSSFeed class.

feed_title: str: The title of the feed that will be created for the collection. By default, this is the title of the collection, but you can set this to any string, or leave it to the user to set.

include_suffixes: list[str]: List of extensions that will be used to filter a file-based content-path. NOTE: This is only used if iter_content_path is not overridden.

PageParser: Type[BasePageParser]: PageParser that is used by the generated Page Objects.

parser_extras: dict[str, Any]: Extra attributes that will be passed to the PageParser class.

required_themes: list[Theme]: Some collections may require a specific theme to be used. This attribute allows you to set a list of themes that will be required for the collection. These will be installed when @site.collection is called.

sort_by: str: The attribute that will be used to sort the collection Page objects. By default, this is the title of the page, but you can set this to any attribute that is available on the page object, or leave it to the user to set.

sort_reverse: bool: Whether or not the collection should be sorted in reverse order. By default, this is False, but you can set this to True, or leave it to the user to set.

Methods

iter_content_path(self) -> Iterable: This method is used to parse the content_path attribute. By default, this performs a pathlib.Path.glob that will use the include_suffixes attribute to filter the files.

get_page(self) -> Page: This method is used when creating a page from the collection. The usual flow is to create an instance of the page object and then add any attributes that you would like to additionally set (perhaps from the collection).