簡體   English   中英

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

Bellow代碼可能會滿足您的需求:

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並運行CMS。 所有頁面都將存儲在/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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM