You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
2 years ago
|
'use strict';
|
||
|
|
||
|
const { Schema } = require('warehouse');
|
||
|
const { join } = require('path');
|
||
|
const Moment = require('./types/moment');
|
||
|
const moment = require('moment');
|
||
|
const { full_url_for } = require('hexo-util');
|
||
|
|
||
|
module.exports = ctx => {
|
||
|
const Page = new Schema({
|
||
|
title: {type: String, default: ''},
|
||
|
date: {
|
||
|
type: Moment,
|
||
|
default: moment,
|
||
|
language: ctx.config.languages,
|
||
|
timezone: ctx.config.timezone
|
||
|
},
|
||
|
updated: {
|
||
|
type: Moment,
|
||
|
language: ctx.config.languages,
|
||
|
timezone: ctx.config.timezone
|
||
|
},
|
||
|
comments: {type: Boolean, default: true},
|
||
|
layout: {type: String, default: 'page'},
|
||
|
_content: {type: String, default: ''},
|
||
|
source: {type: String, required: true},
|
||
|
path: {type: String, required: true},
|
||
|
raw: {type: String, default: ''},
|
||
|
content: {type: String},
|
||
|
excerpt: {type: String},
|
||
|
more: {type: String}
|
||
|
});
|
||
|
|
||
|
Page.virtual('permalink').get(function() {
|
||
|
return full_url_for.call(ctx, this.path);
|
||
|
});
|
||
|
|
||
|
Page.virtual('full_source').get(function() {
|
||
|
return join(ctx.source_dir, this.source || '');
|
||
|
});
|
||
|
|
||
|
return Page;
|
||
|
};
|