helpers.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. var get_posts = function(pages){
  2. var posts = [];
  3. pages.forEach(page => {
  4. if(page.layout == "post") posts.push(page);
  5. });
  6. return posts;
  7. }
  8. var get_projects = function(pages){
  9. var projects = [];
  10. pages.forEach(page => {
  11. if(page.layout == "project") projects.push(page);
  12. });
  13. return projects;
  14. }
  15. hexo.extend.helper.register('project_count', function(pages){
  16. return get_projects(pages).length;
  17. });
  18. hexo.extend.helper.register('blog_count', function(pages){
  19. return get_posts(pages).length;
  20. });
  21. hexo.extend.helper.register('is_video_provider', function(url, provider){
  22. url = url.replace('http://', '')
  23. url = url.replace('https://', '')
  24. url = url.replace('www', '')
  25. var parts = url.split('.');
  26. return parts[0] == provider ? true : false;
  27. });
  28. hexo.extend.helper.register('youtube_embed_link', function(url){
  29. url = url.replace('http://', '')
  30. url = url.replace('https://', '')
  31. var parts = url.split('/');
  32. return `http://www.youtube.com/embed/${parts[2]}`;
  33. });
  34. hexo.extend.helper.register('vimeo_embed_link', function(url){
  35. url = url.replace('http://', '')
  36. url = url.replace('https://', '')
  37. url = url.replace('vimeo.com/', '')
  38. return `https://player.vimeo.com/video/${url}`;
  39. });
  40. hexo.extend.helper.register('order_projects', function(pages){
  41. var projects = get_projects(pages);
  42. projects.sort(function(a,b){
  43. return new Date(b.date) - new Date(a.date);
  44. });
  45. return projects;
  46. });
  47. hexo.extend.helper.register('order_posts', function(pages){
  48. var posts = get_posts(pages);
  49. posts.sort(function(a,b){
  50. return new Date(b.date) - new Date(a.date);
  51. });
  52. return posts;
  53. });
  54. hexo.extend.helper.register('next_post', function(current_post, pages){
  55. var posts = get_posts(pages);
  56. posts.sort(function(a,b){
  57. return new Date(b.date) - new Date(a.date);
  58. });
  59. for (let i = 0; i < posts.length; i++) {
  60. if(posts[i].title == current_post.title){
  61. if(i + 1 < posts.length) return posts[i + 1];
  62. else return posts[0];
  63. }
  64. }
  65. });
  66. hexo.extend.helper.register('featured_projects', function(pages){
  67. var projects = get_projects(pages);
  68. projects.sort(function(a,b){
  69. return new Date(b.date) - new Date(a.date);
  70. });
  71. var featured = [];
  72. projects.forEach(project => {
  73. if(project.featured == true) featured.push(project);
  74. });
  75. return featured;
  76. });
  77. hexo.extend.helper.register('limit', function(pages, limit){
  78. var list = []
  79. for (let i = 0; i < pages.length; i++) {
  80. if(i < limit) list.push(pages[i]);
  81. }
  82. return list;
  83. });