fix(feed): compatibility with hexo 4

- permalink variable is now encoded by default
- es6-fy
- remove categories list
This commit is contained in:
curben 2019-10-17 10:28:40 +01:00
parent c61fdab84f
commit 8c8c334eaa
No known key found for this signature in database
GPG Key ID: 5D9DB57A25D34EE3
3 changed files with 17 additions and 20 deletions

View File

@ -1,29 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<feed xmlns="https://www.w3.org/2005/Atom">
<title>{{ config.title }}</title>
{% if icon %}<icon>{{ icon }}</icon>{% endif %}
{% if config.subtitle %}<subtitle>{{ config.subtitle }}</subtitle>{% endif %}
<link href="{{ feed_url | uriencode }}" rel="self"/>
{% if config.feed.hub %}<link href="{{ config.feed.hub | uriencode }}" rel="hub"/>{% endif %}
<link href="{{ url }}"/>
<updated>{{ posts.first().date | date }}</updated>
<id>{{ url }}</id>
<link href="{{ url | uriencode }}"/>
<updated>{{ posts.first().updated.toISOString() }}</updated>
<id>{{ url | uriencode }}</id>
{% if config.author %}
<author>
<name>{{ config.author }}</name>
{% if config.email %}<email>{{ config.email }}</email>{% endif %}
</author>
{% endif %}
<generator uri="http://hexo.io/">Hexo</generator>
<generator uri="https://hexo.io/">Hexo</generator>
{% for post in posts.toArray() %}
<entry>
<title>{{ post.title }}</title>
<link href="{{ url }}{{ post.path | uriencode }}"/>
<id>{{ url }}{{ post.path }}</id>
<published>{{ post.date | date }}</published>
<link href="{{ post.permalink }}"/>
<id>{{ post.permalink }}</id>
<published>{{ post.date.toISOString() }}</published>
<updated>{% if post.lastUpdated %}{{ post.lastUpdated | date }}{% else %}{{ post.date | date }}{% endif %}</updated>
{% if config.feed.content and post.content %}
<content type="html"><![CDATA[{{ post.more | noControlChars | safe }}]]></content>
<content type="html"><![CDATA[{{ post.content | noControlChars | safe }}]]></content>
{% endif %}
<summary type="html">
{% if post.description %}
@ -47,13 +47,10 @@
{% endif %}
</summary>
{% if post.image %}
<content src="{{ url }}{{ post.image | uriencode }}" type="image" />
<content src="{{ url + post.image | uriencode }}" type="image" />
{% endif %}
{% for category in post.categories.toArray() %}
<category term="{{ category.name }}" scheme="{{ url }}{{ category.path | uriencode }}"/>
{% endfor %}
{% for tag in post.tags.toArray() %}
<category term="{{ tag.name }}" scheme="{{ url }}{{ tag.path | uriencode }}"/>
<category term="{{ tag.name }}" scheme="{{ url + tag.path | uriencode }}"/>
{% endfor %}
</entry>
{% endfor %}

View File

@ -2,8 +2,8 @@
const nunjucks = require('nunjucks')
const env = new nunjucks.Environment()
const pathFn = require('path')
const fs = require('fs')
const { join } = require('path')
const { readFileSync } = require('fs')
const moment = require('moment')
env.addFilter('uriencode', str => {
@ -18,8 +18,8 @@ env.addFilter('date', str => {
return moment(str).format('YYYY-MM-DD[T00:00:00.000Z]')
})
const atomTmplSrc = pathFn.join(__dirname, './.atom.xml')
const atomTmpl = nunjucks.compile(fs.readFileSync(atomTmplSrc, 'utf8'), env)
const atomTmplSrc = join(__dirname, './.atom.xml')
const atomTmpl = nunjucks.compile(readFileSync(atomTmplSrc, 'utf8'), env)
module.exports = function (locals) {
const config = this.config

View File

@ -7,7 +7,7 @@
* to use post.lastUpdated and remove timezone
*/
const pathFn = require('path')
const { extname } = require('path')
const config = hexo.config.feed = Object.assign({
type: 'atom',
@ -25,7 +25,7 @@ if (!config.path) {
}
// Add extension name if don't have
if (!pathFn.extname(config.path)) {
if (!extname(config.path)) {
config.path += '.xml'
}