diff --git a/README.md b/README.md index f1ef6f0..09e4a87 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/lib/generator.js b/lib/generator.js index 3063b0f..e219db5 100644 --- a/lib/generator.js +++ b/lib/generator.js @@ -22,6 +22,29 @@ function fetchCover(str) { var covers = fetchCovers(str) return covers ? covers[0] : null; } +/* +* Return +* true: found in +* false: not found in +*/ +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) { @@ -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)) { + /* not found in */ + //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 + }) + }; + } })); }