74c0d59019
Blog RSS feed (novaconium/ISSUES.md): - App/pages/blog/feed/index.php - main feed, built from the same hand-written $posts array App/pages/blog/index.php renders from, so it works with content_index_enabled left at its default false. Added a published date field per post entry. - App/pages/blog/tag/[tag]/feed/index.php - per-tag feed, gated on content_index_enabled the same way blog/tag/[tag]/index.php is. - novaconium/lib/Rss.php - shared RSS 2.0 envelope builder both feeds use, generic (title/link/description/items in, XML string out). - New head_extra block in the root layout (empty by default) so App/pages/blog/_layout/layout.twig can add feed auto-discovery scoped to /blog/* only. Footer: - New content_index_enabled Twig global (Renderer/bootstrap.php), same pattern as admin_auth_enabled. - Right-aligned footer menu linking to /sitemap.xml (only shown when content_index_enabled, so it never links to a 404) and /blog/feed (always shown, no content-index dependency). Docs: - New /admin/docs/rss page: Lib\Rss API, the two shipped feeds, a worked example of adding a feed for another content collection, and how to advertise multiple feeds via head_extra. - New /admin/docs/sitemap page: changefreq/priority blocks, what's included/excluded, an honest callout on the relative-<loc>-URL spec deviation (consistent with how canonical/og:url already work) with an override path for strict compliance, and submitting it to search engines. - /admin/docs (Overview) gains a Requirements section: minimum requirements, then optional requirements for the database/content-index features (pdo_sqlite, optional pdo_mysql, FTS5) - and a Documentation heading separating it from the doc links list. - /admin/docs/getting-started's Requirements line was stale (missing pdo_sqlite entirely, unlike README) - fixed and cross-linked to the Overview page's fuller list. - /admin/docs/content-index trimmed to point at the new RSS/sitemap pages instead of duplicating their detail. Also adds an "In-house comments" entry to novaconium/ISSUES.md's Backlog - a Lib\ class for sidecar-attached comments on any page, depending on the not-yet-built Admin login & user management for real user accounts. Closes the "Blog RSS feed" backlog item.
39 lines
1.8 KiB
PHP
39 lines
1.8 KiB
PHP
<?php
|
|
|
|
// Every post under App/pages/blog/ is now a plain, sidecar-less directory
|
|
// with its own index.twig — none of them are driven by a repository or
|
|
// database, so this listing is just a hand-maintained array pointing at
|
|
// each one. Add a new entry here whenever a new post directory is added.
|
|
// 'published' (YYYY-MM-DD) is used by App/pages/blog/feed/index.php to
|
|
// order and date entries in the RSS feed — illustrative dates here, not
|
|
// derived from real history (this repo's posts all arrived in one batch
|
|
// import, so there's no authentic per-post date to pull from).
|
|
return [
|
|
'posts' => [
|
|
[
|
|
'slug' => 'hello-world',
|
|
'title' => 'Hello, World!',
|
|
'excerpt' => 'The first post on this blog — a plain sidecar-less page, like every other post here now.',
|
|
'published' => '2026-07-11',
|
|
],
|
|
[
|
|
'slug' => 'second-post',
|
|
'title' => 'A Second Post',
|
|
'excerpt' => 'A second post at its own URL, showing that adding a new page under App/pages/blog/ needs nothing but a new directory.',
|
|
'published' => '2026-07-11',
|
|
],
|
|
[
|
|
'slug' => 'twig-syntax-guide',
|
|
'title' => 'Twig Syntax Guide',
|
|
'excerpt' => 'A tour of the Twig syntax used throughout this site — output, filters, control structures, template inheritance, and a few gotchas worth knowing.',
|
|
'published' => '2026-07-13',
|
|
],
|
|
[
|
|
'slug' => 'style-guide',
|
|
'title' => 'Style Guide',
|
|
'excerpt' => "A showcase of this theme's default styling for headings, lists, tables, code, and other common HTML elements.",
|
|
'published' => '2026-07-13',
|
|
],
|
|
],
|
|
];
|