Skip to content

Commit c9f3565

Browse files
authored
Allow generating empty feeds (#2850)
This enables blogs to be setup that people can subscribe to before the first post is published.
1 parent 23fe252 commit c9f3565

File tree

3 files changed

+10
-16
lines changed

3 files changed

+10
-16
lines changed

Diff for: components/site/src/feeds.rs

+8-14
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,6 @@ pub fn render_feeds(
3636
) -> Result<Option<Vec<String>>> {
3737
let mut pages = all_pages.into_iter().filter(|p| p.meta.date.is_some()).collect::<Vec<_>>();
3838

39-
// Don't generate a feed if none of the pages has a date
40-
if pages.is_empty() {
41-
return Ok(None);
42-
}
43-
4439
pages.par_sort_unstable_by(|a, b| {
4540
let ord = b.meta.datetime.unwrap().cmp(&a.meta.datetime.unwrap());
4641
if ord == Ordering::Equal {
@@ -51,15 +46,14 @@ pub fn render_feeds(
5146
});
5247

5348
let mut context = Context::new();
54-
context.insert(
55-
"last_updated",
56-
pages
57-
.iter()
58-
.filter_map(|page| page.meta.updated.as_ref())
59-
.chain(pages[0].meta.date.as_ref())
60-
.max() // I love lexicographically sorted date strings
61-
.unwrap(), // Guaranteed because of pages[0].meta.date
62-
);
49+
if let Some(last_updated) = pages
50+
.iter()
51+
.filter_map(|page| page.meta.updated.as_ref())
52+
.chain(pages.first().and_then(|p| p.meta.date.as_ref()))
53+
.max()
54+
{
55+
context.insert("last_updated", &last_updated);
56+
}
6357
let library = site.library.read().unwrap();
6458
// limit to the last n elements if the limit is set; otherwise use all.
6559
let num_entries = site.config.feed_limit.unwrap_or(pages.len());

Diff for: components/templates/src/builtins/atom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
{%- endif -%}
1818
"/>
1919
<generator uri="https://www.getzola.org/">Zola</generator>
20-
<updated>{{ last_updated | date(format="%+") }}</updated>
20+
{% if last_updated is defined %}<updated>{{ last_updated | date(format="%+") }}</updated>{% endif %}
2121
<id>{{ feed_url | safe }}</id>
2222
{%- for page in pages %}
2323
<entry xml:lang="{{ page.lang }}">

Diff for: components/templates/src/builtins/rss.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<generator>Zola</generator>
1818
<language>{{ lang }}</language>
1919
<atom:link href="{{ feed_url | safe }}" rel="self" type="application/rss+xml"/>
20-
<lastBuildDate>{{ last_updated | date(format="%a, %d %b %Y %H:%M:%S %z") }}</lastBuildDate>
20+
{% if last_updated is defined %}<lastBuildDate>{{ last_updated | date(format="%a, %d %b %Y %H:%M:%S %z") }}</lastBuildDate>{% endif %}
2121
{%- for page in pages %}
2222
<item>
2323
<title>{{ page.title }}</title>

0 commit comments

Comments
 (0)