page.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. 'use strict';
  2. const { Schema } = require('warehouse');
  3. const { join } = require('path');
  4. const Moment = require('./types/moment');
  5. const moment = require('moment');
  6. const { full_url_for } = require('hexo-util');
  7. module.exports = ctx => {
  8. const Page = new Schema({
  9. title: {type: String, default: ''},
  10. date: {
  11. type: Moment,
  12. default: moment,
  13. language: ctx.config.languages,
  14. timezone: ctx.config.timezone
  15. },
  16. updated: {
  17. type: Moment,
  18. language: ctx.config.languages,
  19. timezone: ctx.config.timezone
  20. },
  21. comments: {type: Boolean, default: true},
  22. layout: {type: String, default: 'page'},
  23. _content: {type: String, default: ''},
  24. source: {type: String, required: true},
  25. path: {type: String, required: true},
  26. raw: {type: String, default: ''},
  27. content: {type: String},
  28. excerpt: {type: String},
  29. more: {type: String}
  30. });
  31. Page.virtual('permalink').get(function() {
  32. return full_url_for.call(ctx, this.path);
  33. });
  34. Page.virtual('full_source').get(function() {
  35. return join(ctx.source_dir, this.source || '');
  36. });
  37. return Page;
  38. };