javascriptnode.jscontent-management-systemtotal.jsnosql

Total.js CMS export all complete pages to folder


I'm using Total.js CMS for my blog, but I want to export the complete HTML files from the database

I tried this code to export it

NOSQL('pages').find().callback(function(err, response) {
      response.forEach(function(page) {
            fs.writeFileSync(__dirname+'/content/index.html', page.body);
      });
});

But it only rendered the widgets that I'm using, not the full page.

How to do it properly? Thanks


Solution

  • This is better solution. Create a definition file e.g. export and run your CMS. All pages will be stored in /public/render/ directory.

    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);