diff --git a/flatfilecms/templates/atom.jinja2 b/flatfilecms/templates/atom.jinja2
new file mode 100644
index 0000000..43c13ac
--- /dev/null
+++ b/flatfilecms/templates/atom.jinja2
@@ -0,0 +1,38 @@
+
+
+ {{title}}
+ {%- if subtitle %}
+ {{subtitle}}
+ {%- endif %}
+
+ {%- if alternate %}
+
+ {%- endif %}
+ {{(pages[0][1].page['updated'] or pages[0][1].page['published']).isoformat()}}+00:00
+ urn:uuid:{{id}}
+
+ {{author['name']}}
+
+ {%- if category %}
+
+ {%- endif %}
+ flatfilecms
+ {%- for item in pages %}
+
+ {{item[1].page['title']}}
+
+ urn:uuid:{{item[1].page['id']}}
+ {{(item[1].page['updated'] or item[1].page['published']).isoformat()}}+00:00
+ {{item[1].page['published'].isoformat()}}+00:00
+ {{item[1].page['summary'] or item[1].page['description']}}
+ {%- if item[1].page['author'] %}
+
+ {{item[1].page['author']['name']}}
+
+ {%- endif %}
+ {%- if item[1].page['category'] %}
+
+ {%- endif %}
+
+ {%- endfor %}
+
diff --git a/flatfilecms/templates/base.jinja2 b/flatfilecms/templates/base.jinja2
index f4304cd..07b5fb6 100644
--- a/flatfilecms/templates/base.jinja2
+++ b/flatfilecms/templates/base.jinja2
@@ -12,6 +12,9 @@
{% if amphtml is defined -%}
{% endif -%}
+ {% for link in alternate -%}
+
+ {% endfor -%}
{{title}}
{% block links %}
{%- endblock %}
diff --git a/flatfilecms/templates/blogposts.jinja2 b/flatfilecms/templates/blogposts.jinja2
index 1aaa1cb..d7a8a05 100644
--- a/flatfilecms/templates/blogposts.jinja2
+++ b/flatfilecms/templates/blogposts.jinja2
@@ -17,4 +17,8 @@
{% endfor %}
+{% set atom_feed = alternate|selectattr('type', 'equalto', 'application/atom+xml')|first -%}
+{% if atom_feed -%}
+Подписаться на обновления:
+{% endif -%}
{% endblock %}
diff --git a/flatfilecms/views/__init__.py b/flatfilecms/views/__init__.py
index 82c4518..d671002 100644
--- a/flatfilecms/views/__init__.py
+++ b/flatfilecms/views/__init__.py
@@ -19,6 +19,7 @@ def set_content_type(self, content_type):
def blog(self, options={}):
path = options.get('base', '')
+ format = options.get('format', 'blogposts')
root = find_root(self.context)
tree = find_resource(root, path)
postlist = []
@@ -27,19 +28,17 @@ def blog(self, options={}):
postlist.append((f"{path}/{name}", item))
post = self.context.page.copy()
post['pages'] = sorted(
- postlist,
- key=lambda t: t[1].page['published'],
- reverse=True)
+ postlist, key=lambda t: t[1].page['published'], reverse=True)
if 'menu' not in post:
post['menu'] = yaml.load(
AssetResolver().resolve(
str(PurePath(self.context.data_path) /
'menu/default.yaml')).stream(),
LoaderFactory(self.context.data_path))
- return render_to_response(
- '{0}.jinja2'.format(
- post.get('template', 'blogposts')),
- post,
- request=self.request,
- response=self.request.response
- )
+ if format == 'atom':
+ set_content_type(self, 'application/atom+xml')
+ return render_to_response(
+ '{0}.jinja2'.format(post.get('template', format)),
+ post,
+ request=self.request,
+ response=self.request.response)