Добавление генератора Atom [closes #4]
parent
724ec1040c
commit
1ca1929e23
|
@ -0,0 +1,38 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="{{data.base_url}}">
|
||||||
|
<title type="text">{{title}}</title>
|
||||||
|
{%- if subtitle %}
|
||||||
|
<subtitle type="html">{{subtitle}}</subtitle>
|
||||||
|
{%- endif %}
|
||||||
|
<link rel="self" href="{{request.path_qs}}"/>
|
||||||
|
{%- if alternate %}
|
||||||
|
<link rel="alternate" type="text/html" hreflang="{{request.locale_name}}" href="{{alternate}}"/>
|
||||||
|
{%- endif %}
|
||||||
|
<updated>{{(pages[0][1].page['updated'] or pages[0][1].page['published']).isoformat()}}+00:00</updated>
|
||||||
|
<id>urn:uuid:{{id}}</id>
|
||||||
|
<author>
|
||||||
|
<name>{{author['name']}}</name>
|
||||||
|
</author>
|
||||||
|
{%- if category %}
|
||||||
|
<category term="{{category}}"/>
|
||||||
|
{%- endif %}
|
||||||
|
<generator uri="https://trac.radium.group/flatfilecms/" version="1.0">flatfilecms</generator>
|
||||||
|
{%- for item in pages %}
|
||||||
|
<entry>
|
||||||
|
<title>{{item[1].page['title']}}</title>
|
||||||
|
<link href="{{item[0]}}"/>
|
||||||
|
<id>urn:uuid:{{item[1].page['id']}}</id>
|
||||||
|
<updated>{{(item[1].page['updated'] or item[1].page['published']).isoformat()}}+00:00</updated>
|
||||||
|
<published>{{item[1].page['published'].isoformat()}}+00:00</published>
|
||||||
|
<summary>{{item[1].page['summary'] or item[1].page['description']}}</summary>
|
||||||
|
{%- if item[1].page['author'] %}
|
||||||
|
<author>
|
||||||
|
<name>{{item[1].page['author']['name']}}</name>
|
||||||
|
</author>
|
||||||
|
{%- endif %}
|
||||||
|
{%- if item[1].page['category'] %}
|
||||||
|
<category term="{{item[1].page['category']}}"/>
|
||||||
|
{%- endif %}
|
||||||
|
</entry>
|
||||||
|
{%- endfor %}
|
||||||
|
</feed>
|
|
@ -12,6 +12,9 @@
|
||||||
{% if amphtml is defined -%}
|
{% if amphtml is defined -%}
|
||||||
<link rel="amphtml" href="{{amphtml}}">
|
<link rel="amphtml" href="{{amphtml}}">
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
|
{% for link in alternate -%}
|
||||||
|
<link rel="{{link.type}}" title="{{link.title}}" href="{{link.href}}">
|
||||||
|
{% endfor -%}
|
||||||
<title>{{title}}</title>
|
<title>{{title}}</title>
|
||||||
{% block links %}
|
{% block links %}
|
||||||
{%- endblock %}
|
{%- endblock %}
|
||||||
|
|
|
@ -17,4 +17,8 @@
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
{% set atom_feed = alternate|selectattr('type', 'equalto', 'application/atom+xml')|first -%}
|
||||||
|
{% if atom_feed -%}
|
||||||
|
<p>Подписаться на обновления: <a href="{{atom_feed.href}}"><i class="fas fa-rss"></i></a></p>
|
||||||
|
{% endif -%}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -19,6 +19,7 @@ def set_content_type(self, content_type):
|
||||||
|
|
||||||
def blog(self, options={}):
|
def blog(self, options={}):
|
||||||
path = options.get('base', '')
|
path = options.get('base', '')
|
||||||
|
format = options.get('format', 'blogposts')
|
||||||
root = find_root(self.context)
|
root = find_root(self.context)
|
||||||
tree = find_resource(root, path)
|
tree = find_resource(root, path)
|
||||||
postlist = []
|
postlist = []
|
||||||
|
@ -27,19 +28,17 @@ def blog(self, options={}):
|
||||||
postlist.append((f"{path}/{name}", item))
|
postlist.append((f"{path}/{name}", item))
|
||||||
post = self.context.page.copy()
|
post = self.context.page.copy()
|
||||||
post['pages'] = sorted(
|
post['pages'] = sorted(
|
||||||
postlist,
|
postlist, key=lambda t: t[1].page['published'], reverse=True)
|
||||||
key=lambda t: t[1].page['published'],
|
|
||||||
reverse=True)
|
|
||||||
if 'menu' not in post:
|
if 'menu' not in post:
|
||||||
post['menu'] = yaml.load(
|
post['menu'] = yaml.load(
|
||||||
AssetResolver().resolve(
|
AssetResolver().resolve(
|
||||||
str(PurePath(self.context.data_path) /
|
str(PurePath(self.context.data_path) /
|
||||||
'menu/default.yaml')).stream(),
|
'menu/default.yaml')).stream(),
|
||||||
LoaderFactory(self.context.data_path))
|
LoaderFactory(self.context.data_path))
|
||||||
return render_to_response(
|
if format == 'atom':
|
||||||
'{0}.jinja2'.format(
|
set_content_type(self, 'application/atom+xml')
|
||||||
post.get('template', 'blogposts')),
|
return render_to_response(
|
||||||
post,
|
'{0}.jinja2'.format(post.get('template', format)),
|
||||||
request=self.request,
|
post,
|
||||||
response=self.request.response
|
request=self.request,
|
||||||
)
|
response=self.request.response)
|
||||||
|
|
Reference in New Issue