///////////////////////////////////////////////////////////////////////////////
function garden_generate_atom($output_directory, $content_items) {
- $output_items = [];
-
$recent_items = [];
foreach ($content_items as $item) {
if ($item->type != GardenItemType::Article) {
garden_write_file(garden_path($output_directory, 'feed.atom'), $html_data);
}
+function garden_generate_json($output_directory, $content_items) {
+ $recent_items = [];
+ foreach ($content_items as $item) {
+ if ($item->type != GardenItemType::Article) {
+ continue;
+ }
+
+ $recent_items[$item->date] = $item;
+ }
+
+ // Sort by date...
+ ksort($recent_items);
+ $recent_items = array_reverse($recent_items);
+
+ $feed = [];
+ $feed['version'] = 'https://jsonfeed.org/version/1.1';
+ $feed['title'] = GARDEN_TEMPLATE_CONSTANTS['site_name'];
+ $feed['home_page_url'] = garden_site_url('/');
+ $feed['feed_url'] = garden_site_url('/feed.json');
+ $feed['items'] = [];
+
+ foreach ($recent_items as $item) {
+ $feed_item = [];
+ $feed_item['id'] = $item->date + hexdec(hash('crc32', $item->title));
+ $feed_item['date_published'] = date(DATE_RFC3339, $item->date);
+ $feed_item['title'] = $item->title;
+ $feed_item['content_text'] = 'An update was published.';
+ $feed_item['url'] = $item->url;
+ $feed['items'][] = $feed_item;
+ }
+
+ $json_data = json_encode($feed);
+ garden_write_file(garden_path($output_directory, 'feed.json'), $json_data);
+}
+
///////////////////////////////////////////////////////////////////////////////
// Main
///////////////////////////////////////////////////////////////////////////////
$post_process_items = garden_generate_html(GARDEN_OUTPUT_DIR, $process_items);
garden_make_images($post_process_items);
garden_generate_atom(GARDEN_OUTPUT_DIR, $process_items);
+ garden_generate_json(GARDEN_OUTPUT_DIR, $process_items);
}
///////////////////////////////////////////////////////////////////////////////
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="<?= garden_site_url('style', 'screen.css') ?>">
+
<link rel="alternate" type="application/atom+xml" href="<?= garden_site_url('feed.atom') ?>">
+ <link rel="alternate" type="application/feed+json" href="<?= garden_site_url('feed.json') ?>">
</head>
<body>
<?php endif ?>
<?php endforeach ?>
</ul>
+
+ <ul>
+ <li><a href="<?= garden_site_url('feed.atom') ?>" class="feed">Atom Feed</a></li>
+ <li><a href="<?= garden_site_url('feed.json') ?>" class="feed">JSON Feed</a></li>
+ </ul>
</nav>
<?= garden_template_content(); ?>