Skip to content

Allow a root Atom feed to declare one source section #179

Description

@forkwright

Finding

Typikon's global Atom template always consumes Zola's site-wide feed pages. A consumer cannot
declare that one publication section, such as writing/ or journal/, owns canonical root
/atom.xml while retaining root-feed autodiscovery and the shared Typikon template.

This is already a two-consumer substrate need:

  • Ardent Tools carries a local templates/atom.xml fork so only writing/ publishes.
  • Ardent Leatherworks needs the same contract for journal/.

#31/#40 deliberately preserved Zola's site-wide page set while fixing the empty-feed case.
#92/#171 corrected <updated> calculation without adding membership scope. Neither owns this
setting.

Desired correction

Add an optional consumer setting such as:

[extra]
feed_source_section = "journal/_index.md"

For the global feed, resolve that section and emit only its dated, feed-eligible direct pages.
Preserve current site-wide behavior when the setting is absent and preserve Zola's supplied page
set for native section/taxonomy feeds. A configured scope must own the feed title, subtitle,
alternate link, membership, and <updated> value. Missing or empty configured scopes should fail
by name instead of silently falling back to site-wide freshness.

Expose include_in_feeds in the applicable closed page schemas so consumers can exclude one entry
without forking the template.

Acceptance

  1. A fixture with two Journal entries and a newer dated product emits exactly the two Journal IDs
    at root /atom.xml.
  2. Editing Terms or product content leaves the scoped Atom file byte-identical.
  3. Editing an older Journal entry with a newer updated value advances both the entry and feed
    timestamps.
  4. include_in_feeds = false excludes a scoped entry.
  5. Missing or empty configured sections fail with the configured path in the error.
  6. An unset scope preserves Preserve Zola's page context in the global Atom feed #31's site-wide behavior.
  7. Ardent Tools can remove its Atom shadow and configure writing/_index.md; Leatherworks can
    configure journal/_index.md; both consumer gates pass.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions