Total.js CMS 将所有完整页面导出到文件夹
Total.js CMS export all complete pages to folder
我正在为我的博客使用 Total.js CMS,但我想从数据库中导出完整的 HTML 文件
我试过用这段代码导出它
NOSQL('pages').find().callback(function(err, response) {
response.forEach(function(page) {
fs.writeFileSync(__dirname+'/content/index.html', page.body);
});
});
但它只呈现我正在使用的小部件,而不是整个页面。
如何正确操作?谢谢
首先您要覆盖 index.html 但您需要将每个页面放入其自己的文件中。但这仍然不能解决您遇到的问题,因为 page.body
被渲染为 ./themes/default/views/cms/default.html
模板,而模板被渲染为 ./themes/default/views/layout.html
下面的代码可能会满足您的需要:
NOSQL('pages').find().callback(function(err, response) {
response.forEach(function(page) {
fs.writeFileSync(__dirname+'/content/' + page.id + '.html', F.view('~/cms/default', {}, { page: { body: page.body }}));
});
});
这是更好的解决方案。创建一个定义文件,例如export
和 运行 您的内容管理系统。所有页面将存储在 /public/render/
目录中。
const Fs = require('fs');
function save() {
NOSQL('pages').find().fields('id').callback(function(err, response) {
var repository = {};
var filter = {};
var directory = F.path.public('/render/');
try {
Fs.mkdirSync(directory);
} catch (e) {}
response.waitFor(function(item, next) {
filter.id = item.id;
GETSCHEMA('Page').operation('render', filter, function(err, response) {
repository.cms = true;
repository.render = true;
repository.page = response;
Fs.writeFile(directory + response.title.slug() + '.html', F.view('~/cms/' + response.template, EMPTYOBJECT, '~/cms/layout', repository), next);
});
}, () => console.log('DONE'));
});
}
F.on('ready', save);
我正在为我的博客使用 Total.js CMS,但我想从数据库中导出完整的 HTML 文件
我试过用这段代码导出它
NOSQL('pages').find().callback(function(err, response) {
response.forEach(function(page) {
fs.writeFileSync(__dirname+'/content/index.html', page.body);
});
});
但它只呈现我正在使用的小部件,而不是整个页面。
如何正确操作?谢谢
首先您要覆盖 index.html 但您需要将每个页面放入其自己的文件中。但这仍然不能解决您遇到的问题,因为 page.body
被渲染为 ./themes/default/views/cms/default.html
模板,而模板被渲染为 ./themes/default/views/layout.html
下面的代码可能会满足您的需要:
NOSQL('pages').find().callback(function(err, response) {
response.forEach(function(page) {
fs.writeFileSync(__dirname+'/content/' + page.id + '.html', F.view('~/cms/default', {}, { page: { body: page.body }}));
});
});
这是更好的解决方案。创建一个定义文件,例如export
和 运行 您的内容管理系统。所有页面将存储在 /public/render/
目录中。
const Fs = require('fs');
function save() {
NOSQL('pages').find().fields('id').callback(function(err, response) {
var repository = {};
var filter = {};
var directory = F.path.public('/render/');
try {
Fs.mkdirSync(directory);
} catch (e) {}
response.waitFor(function(item, next) {
filter.id = item.id;
GETSCHEMA('Page').operation('render', filter, function(err, response) {
repository.cms = true;
repository.render = true;
repository.page = response;
Fs.writeFile(directory + response.title.slug() + '.html', F.view('~/cms/' + response.template, EMPTYOBJECT, '~/cms/layout', repository), next);
});
}, () => console.log('DONE'));
});
}
F.on('ready', save);