json_generator.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. var pathFn = require('path');
  2. var fs = require('fs');
  3. module.exports = function(locals){
  4. var config = this.config;
  5. var searchConfig = config.search;
  6. var searchfield = searchConfig.field;
  7. var content = searchConfig.content;
  8. var posts, pages;
  9. if(searchfield.trim() != ''){
  10. searchfield = searchfield.trim();
  11. if(searchfield == 'post'){
  12. posts = locals.posts.sort('-date');
  13. }else if(searchfield == 'page'){
  14. pages = locals.pages;
  15. }else{
  16. posts = locals.posts.sort('-date');
  17. pages = locals.pages;
  18. }
  19. }else{
  20. posts = locals.posts.sort('-date');
  21. }
  22. var res = new Array()
  23. var index = 0
  24. if(posts){
  25. posts.each(function(post) {
  26. if (post.indexing != undefined && !post.indexing) return;
  27. var temp_post = new Object()
  28. if (post.title) {
  29. temp_post.title = post.title
  30. }
  31. if (post.path) {
  32. temp_post.url = config.root + post.path
  33. }
  34. if (content != false && post._content) {
  35. temp_post.content = post._content
  36. }
  37. if (post.tags && post.tags.length > 0) {
  38. var tags = [];
  39. post.tags.forEach(function (tag) {
  40. tags.push(tag.name);
  41. });
  42. temp_post.tags = tags
  43. }
  44. if (post.categories && post.categories.length > 0) {
  45. var categories = [];
  46. post.categories.forEach(function (cate) {
  47. categories.push(cate.name);
  48. });
  49. temp_post.categories = categories
  50. }
  51. res[index] = temp_post;
  52. index += 1;
  53. });
  54. }
  55. if(pages){
  56. pages.each(function(page){
  57. if (page.indexing != undefined && !page.indexing) return;
  58. var temp_page = new Object()
  59. if (page.title) {
  60. temp_page.title = page.title
  61. }
  62. if (page.path) {
  63. temp_page.url = config.root + page.path
  64. }
  65. if (content != false && page._content) {
  66. temp_page.content = page._content
  67. }
  68. if (page.tags && page.tags.length > 0) {
  69. var tags = new Array()
  70. var tag_index = 0
  71. page.tags.each(function (tag) {
  72. tags[tag_index] = tag.name;
  73. });
  74. temp_page.tags = tags
  75. }
  76. if (page.categories && page.categories.length > 0) {
  77. temp_page.categories = []
  78. (page.categories.each || page.categories.forEach)(function (item) {
  79. temp_page.categories.push(item);
  80. });
  81. }
  82. res[index] = temp_page;
  83. index += 1;
  84. });
  85. }
  86. var json = JSON.stringify(res);
  87. return {
  88. path: searchConfig.path,
  89. data: json
  90. };
  91. };