Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ restful:
use_tag_slug: false # Use slug for filename of tag data
post: true # 文章数据
pages: false # 额外的 Hexo 页面数据, 如 About
pages_exclude: # 排除页面,如 lib
- lib
- images
- css
- js
```

## Document
Expand Down
60 changes: 44 additions & 16 deletions lib/generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,29 @@ function fetchCover(str) {
var covers = fetchCovers(str)
return covers ? covers[0] : null;
}
/*
* Return
* true: <RelativePath> found in <config.restful.pages_exclude>
* false: <RelativePath> not found in <config.restful.pages_exclude>
*/
function isExclude(RelativePath, config) {
if (!config.pages_exclude) return false;
const P_exclude = config.pages_exclude;
const exclude = P_exclude;
if (P_exclude && !Array.isArray(P_exclude)) {
exclude = [P_exclude];
}
// 404/index.md => ["404","index.md"]
const RPArr = RelativePath.split("/");
const RPStr = RPArr[0];

if (exclude && exclude.length) {
for (const i of exclude) {
if (RPStr.toLowerCase() === i.toLowerCase()) return true;
}
}
return false;
}

module.exports = function (cfg, site) {

Expand Down Expand Up @@ -261,22 +284,27 @@ module.exports = function (cfg, site) {

if (restful.pages) {
apiData = apiData.concat(site.pages.data.map(function (page) {
var safe_title = page.title.replace(/[^a-z0-9]/gi, '-').toLowerCase()
var path = 'api/pages/' + safe_title + '.json';

return {
path: path,
data: JSON.stringify({
title: page.title,
date: page.date,
updated: page.updated,
comments: page.comments,
path: path,
covers: fetchCovers(page.content),
excerpt: filterHTMLTags(page.excerpt),
content: page.content
})
};
if (!isExclude(page.source, restful)) {
/* <page.source> not found in <config.restful.pages_exclude> */
//console.log('INFO Path:' + page.source); //404/index.md
//var safe_title = page.title.replace(/[^a-z0-9]/gi, '-').toLowerCase()
var page_filename = page.source.replace(/\/index.md/gi, '').toLowerCase();
var path = 'api/pages/' + page_filename + '.json';

return {
path: path,
data: JSON.stringify({
title: page.title,
date: page.date,
updated: page.updated,
comments: page.comments,
path: path,
covers: fetchCovers(page.content),
excerpt: filterHTMLTags(page.excerpt),
content: page.content
})
};
}
}));
}

Expand Down