Skip to content

Collections #758

Description

@thmarx

This first iteration introduces file-based collections for structured, reusable content.

Collections are stored as flat Markdown files under collections/<collection-name>/ and are available in templates through:

cms.collection('blog').query()

The API reuses the existing Lucene query capabilities, including filtering, sorting, expressions, and pagination. Collection metadata is indexed in a shared, site-scoped Lucene index.

Collection entries use the same workflow, preview, and publication scheduling rules as regular content. Markdown bodies remain unrendered, allowing templates to render them explicitly with the markdown filter when needed.

Collections and files can be added, updated, renamed, or removed at runtime. Filesystem changes are detected and indexed automatically without restarting the server. Form definitions and additional collection configuration are not part of this iteration.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions