Skip to content

Commit 1bb0078

Browse files
committed
♻️ cleaner separation between rss/atom/json, thanks @dewey
related #60
1 parent 522e431 commit 1bb0078

File tree

7 files changed

+27
-8
lines changed

7 files changed

+27
-8
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ If you use these defaults you need to provide the fields `date (type: date)` and
6666
'datefield' => 'date',
6767
'textfield' => 'text',
6868
'modified' => time(),
69-
'snippet' => 'feed/rss', // 'feed/json'
69+
'snippet' => 'feed/rss', // 'feed/json', 'feed/atom'
7070
'dateformat' => 'r',
7171
'mime' => null,
7272
'sort' => true,

classes/Feed.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ public function optionsFromDefault(?Pages $pages = null, $options = []): array
124124
'link' => site()->url(),
125125
'urlfield' => 'url',
126126
'titlefield' => 'title',
127+
'idfield' => 'id',
127128
'datefield' => 'date',
128129
'textfield' => 'text',
129130
'modified' => time(),
@@ -181,6 +182,8 @@ public function response(): Response
181182
return new Response($this->string, $mime);
182183
} elseif ($snippet === 'feed/sitemap' && Feed::isXml($this->string)) {
183184
return new Response($this->string, 'xml');
185+
} elseif ($snippet === 'feed/atom' || Feed::isXml($this->string)) {
186+
return new Response($this->string, 'xml');
184187
} elseif ($snippet === 'feed/json' || Feed::isJson($this->string)) {
185188
return new Response($this->string, 'json');
186189
} elseif ($snippet === 'feed/rss' || Feed::isXml($this->string)) {

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "bnomei/kirby3-feed",
33
"type": "kirby-plugin",
4-
"version": "1.6.1",
4+
"version": "1.7.0",
55
"description": "Generate a RSS/JSON/Sitemap-Feed from a Pages-Collection",
66
"license": "MIT",
77
"authors": [

index.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
'expires' => (60*24*7), // minutes
1616
],
1717
'snippets' => [
18+
'feed/atom' => __DIR__ . '/snippets/feed/atom.php',
1819
'feed/rss' => __DIR__ . '/snippets/feed/rss.php',
1920
'feed/json' => __DIR__ . '/snippets/feed/json.php',
2021
'feed/sitemap' => __DIR__ . '/snippets/feed/sitemap.php',

snippets/feed/atom.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
echo '<?xml version="1.0" encoding="utf-8"?>'; ?><feed xmlns="http://www.w3.org/2005/Atom">
3+
<title><?= \Kirby\Toolkit\Xml::encode($title) ?></title>
4+
<link href="<?= $link ?>"/>
5+
<updated><?= date('r', $modified) ?></updated>
6+
<id><?= str_replace(site()->url(),'', $link) ?></id>
7+
<?php foreach ($items as $item): ?>
8+
<entry>
9+
<title><?= \Kirby\Toolkit\Xml::encode($item->{$titlefield}()) ?></title>
10+
<link href="<?= $item->{$urlfield}() ?>"/>
11+
<id><?= $item->{$idfield}() ?></id>
12+
<updated><?= $datefield === 'modified' ? $item->modified('r', 'date') : date('r', $item->{$datefield}()->toTimestamp()) ?></updated>
13+
<summary><![CDATA[<?= $item->{$textfield}()->kirbytext() ?>]]><</summary>
14+
</entry>
15+
<?php endforeach; ?>
16+
</feed>

snippets/feed/rss.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
<?php
22
echo '<?xml version="1.0" encoding="utf-8"?>';
3-
?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
3+
?><rss version="2.0">
44
<channel>
55
<title><?= \Kirby\Toolkit\Xml::encode($title) ?></title>
66
<link><?= \Kirby\Toolkit\Xml::encode($link) ?></link>
77
<lastBuildDate><?= $modified ?></lastBuildDate>
8-
<atom:link href="<?= \Kirby\Toolkit\Xml::encode($feedurl) ?>" rel="self" type="application/rss+xml" />
98
<?php if ($description && is_string($description) && strlen(trim($description)) > 0): ?>
109
<description><?= \Kirby\Toolkit\Xml::encode($description) ?></description>
1110
<?php endif; ?>

vendor/composer/installed.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?php return array(
22
'root' => array(
33
'name' => 'bnomei/kirby3-feed',
4-
'pretty_version' => '1.6.1',
5-
'version' => '1.6.1.0',
4+
'pretty_version' => '1.7.0',
5+
'version' => '1.7.0.0',
66
'reference' => null,
77
'type' => 'kirby-plugin',
88
'install_path' => __DIR__ . '/../../',
@@ -11,8 +11,8 @@
1111
),
1212
'versions' => array(
1313
'bnomei/kirby3-feed' => array(
14-
'pretty_version' => '1.6.1',
15-
'version' => '1.6.1.0',
14+
'pretty_version' => '1.7.0',
15+
'version' => '1.7.0.0',
1616
'reference' => null,
1717
'type' => 'kirby-plugin',
1818
'install_path' => __DIR__ . '/../../',

0 commit comments

Comments
 (0)